perlを使っています。

localtime関数を使って時間をウェイブで表示しようと思っています。代替成功はしたのですが下記のことに問題があります。
 2001年1月4日2時5分(現状)
 2001年01月04日02時05分(要望)
にしたいのですがどのようにすればできるのか教えていただけないでしょうか?
 又、2001年01月04日02時05分をいちれつにつなげる事、つまり(2001010405)というように一列につなげることはできるのでしょうか?
 どうか教えてください。お願いします。
 
 

A 回答 (4件)

関数をうまく組み合わせれば1行でできちゃうんですね~すごい!(常識?)


関数をあまり知らないので、いつも変数を1つずつ処理してました。
勉強になります。

分割の方法なんですが、kokucho81さんの書かれてる通りですね。
「=~」はマッチ演算子で/^(....)(..)(..)(..)(..)$/というパターンで
左側の変数に代入します。
「.」(ドット)は「\n」(改行)以外の文字にマッチしますので、
意味合い的には最初の4文字を$year2に、次の2文字を$month2に・・・って
感じになります。(「^」が文字列の頭、「$」が文字列の末尾を指定しますので、
このパターンマッチは12文字の文字列にしかマッチしません)
うまく説明できませんが、いけそうですか?

kokucho81さん、間違ってましたらフォローお願いします(^^;
    • good
    • 0

普通なら、以下のように処理します。




########## 0を頭につけて2桁にする処理 ##########
map { $_=sprintf("%02d",$_) } ($month,$day,$hour,$min);

########## 連結 ##########
$xxxx=$year.$month.$day.$hour.$min;

########## 分解 ##########
($year2,$month2,$day2,$hour2,$min2)=$xxxx=~/^(....)(..)(..)(..)(..)$/;
    • good
    • 0

ごめんなさい、



 $xxxx = $year.$month.$hour.$min;

に $dayが抜けてました。

 $xxxx = $year.$month.$day.$hour.$min;

です。
    • good
    • 0
この回答へのお礼

す、すごいです。
いとも簡単にできてしました。
$xxxx = $year.$month.$day.$hour.$min;
の中で
$xxxxをまた年月日に分解することもできるのでしょうか?お願いします。

お礼日時:2002/01/08 01:07

現状の「2001年1月4日2時5分」の変数部分が、


仮に$year、$month、$day、$hour、$minとしたら、

 if($month < 10) {
   $month = "0".$month;
 }
 if($day < 10) {
   $day = "0".$day;
 }
 if($hour < 10) {
   $hour = "0".$hour;
 }
 if($min < 10) {
   $min = "0".$min;
 }

などとしてやれば、要望通りになると思います。
また、一列につなぐのも、

 $xxxx = $year.$month.$hour.$min;

と連結してやればいいと思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

今、見られている記事はコレ!

おしトピ編集部からのゆる~い質問を出題中

お題をもっとみる


このカテゴリの人気Q&Aランキング

おすすめ情報

カテゴリ