• ベストアンサー

決まった形式××××年××月××日にしたい

生年月日を入力できる掲示板のようなものを作っています。 フォーム(HTML部分)↓ - 年 | - 月 | - 日 4桁   1桁or2桁   1桁or2桁 でselectタグで記述してあります 読み込むときは↓ $calender_year = substr($calender,0,4); $calender_mon = substr($calender,4,2); $calender_day = substr($calender,6,2); こんな感じです。 年は4桁で固定されているのでよいのですが、 問題は「月」と「日」で1桁or2桁という点です。 上の読み込み方法だと 1999226  1999年2月26日 19991223  1999年12月23日 下はOKなのですが、上はNGです。 これを解消する手立てを教えてください。 スクリプトあるとうれしいです。 よろしくお願いします。

  • Perl
  • 回答数3
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • taseki
  • ベストアンサー率66% (155/233)
回答No.2

selectタグが3つあるなら、読み込む値も3つになるはずです。 それをどこかで1つに連結して$calenderに入れているわけですから、連結しなければ良いのではないでしょうか。 おそらくスクリプトの始めのほうで、フォーム値取得→連結、をやっているところがあると思います。

その他の回答 (2)

  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.3

年月日を連結する場合は、必ず桁を合わせてください。 フォームで入力欄が違えば違う値で飛んでくるはずです。 そうしないと 2000111 の場合だと、1/11 なのか 11/1 なのかの判断が付きません。 $calender_year = sprintf("%04d",$y); $calender_mon = sprintf("%02d",$m); $calender_day = sprintf("%02d",$d);

  • tandes
  • ベストアンサー率58% (10/17)
回答No.1

フォームで入力された年月日をそれぞれ$y, $m, $dに読み込んでるとして、 $calender = $y . $m . $d としてるということですよね? そこを $calender=sprintf("%04d%02d%02d", $y, $m, $d); にすればよいと思います。

関連するQ&A

  • カレンダー作成

    普通のカレンダーみたいなものを作成したいのですが、例えば今月の頭って月曜日ですよね? それの前の日曜日の枠を作成したいのですが方法がわかりません。 どのようにすればいいのでしょうか? for($i=0;$i<$last;$i++){#●テーブル作成 @weekarray = ('日','月','火','水','木','金','土'); $first = $year.$mon.$day-($day-1); $calender = $first+$i; $youbi_master = getwday($calender_year,$calender_mon,1,1); $calender_year = substr($calender,0,4); $calender_mon = substr($calender,4,2); $calender_day = substr($calender,6,2); $calender_search = $calender_year."/".$calender_mon."/".$calender_day; $calender_youbi = getwday($calender_year,$calender_mon,$calender_day); open(FILE,"log.log"); @log = <FILE>; close(FILE); $gyou = @log; $w = 0; while($w<$gyou){ @log_line = split(/<>/,$log[$w]); $HIDUKE = $log_line[0]; $TITLE = $log_line[1]; $NAKAMI = $log_line[2]; if($calender_youbi == 0){#----------<日曜日だったら if($w == $gyou-1){ print "<TR><TD WIDTH=100 CLASS=TD1>$calender_search <B>$flag_sun $flag</B></TD>\n"; $flag_sun = $flag_sun+1; $flag = $flag +1; } } elsif($calender_youbi == 6){#----------<土曜だったら if($w == $gyou-1){ print "<TD WIDTH=100 CLASS=TD1>$calender_search</TD></TR>\n"; } } else {#----------<その他の曜日 if($w == $gyou-1){ print "<TD WIDTH=100 CLASS=TD1>$calender_search</TD>\n"; } }#曜日による分岐終了 $w++; }# while }# ●テーブル作成for終了

  • javascriptで質問

    javascript初心者です。 日付で自動的に変わるようなメニューが作りたいのですが もっとシンプルに簡潔にできますか? また、開いているページのタブの色を他と変えたいのですができますか? 以下ソース↓ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> <title>スクリプトテスト</title> <style type="text/css"> .menu li{ list-style-type:none; float:left; border:solid 1px #666666; } .menu li a{ padding:5px; background:#eeeeee; display:block; } .menu li a:hover{ background:#ffffff; } </style> <script type="text/javascript"> <!-- var day01 = new Date(); var year01 = day01.getFullYear(); //年 var mon01 = day01.getMonth() + 1; //月 var date01 = day01.getDate(); //日 var day02 = new Date(); day02.setDate( day02.getDate()+1 ); var year02 = day02.getFullYear(); //年 var mon02 = day02.getMonth() + 1; //月 var date02 = day02.getDate(); //日 var day03 = new Date(); day03.setDate( day03.getDate()+2 ); var year03 = day03.getFullYear(); //年 var mon03 = day03.getMonth() + 1; //月 var date03 = day03.getDate(); //日 var day04 = new Date(); day04.setDate( day04.getDate()+3 ); var year04 = day04.getFullYear(); //年 var mon04 = day04.getMonth() + 1; //月 var date04 = day04.getDate(); //日 var day05 = new Date(); day05.setDate( day05.getDate()+4 ); var year05 = day05.getFullYear(); //年 var mon05 = day05.getMonth() + 1; //月 var date05 = day05.getDate(); //日 var day06 = new Date(); day06.setDate( day06.getDate()+5 ); var year06 = day06.getFullYear(); //年 var mon06 = day06.getMonth() + 1; //月 var date06 = day06.getDate(); //日 var day07 = new Date(); day07.setDate( day07.getDate()+6 ); var year07 = day07.getFullYear(); //年 var mon07 = day07.getMonth() + 1; //月 var date07 = day07.getDate(); //日 // --> </script> </head> <body> <ul class="menu"> <script type="text/javascript"> <!-- document.write('<li><a href="'+year01+mon01+date01+'.html">'+mon01+'月'+date01+'日'+'</a></li>'); //--> </script> <script type="text/javascript"> <!-- document.write('<li><a href="'+year02+mon02+date02+'.html">'+mon02+'月'+date02+'日'+'</a></li>'); //--> </script> <script type="text/javascript"> <!-- document.write('<li><a href="'+year03+mon03+date03+'.html">'+mon03+'月'+date03+'日'+'</a></li>'); //--> </script> <script type="text/javascript"> <!-- document.write('<li><a href="'+year04+mon04+date04+'.html">'+mon04+'月'+date04+'日'+'</a></li>'); //--> </script> <script type="text/javascript"> <!-- document.write('<li><a href="'+year05+mon05+date05+'.html">'+mon05+'月'+date05+'日'+'</a></li>'); //--> </script> <script type="text/javascript"> <!-- document.write('<li><a href="'+year06+mon06+date06+'.html">'+mon06+'月'+date06+'日'+'</a></li>'); //--> </script> <script type="text/javascript"> <!-- document.write('<li><a href="'+year07+mon07+date07+'.html">'+mon07+'月'+date07+'日'+'</a></li>'); //--> </script> </ul> </body> </html>

  • 正規表現で動的ページを静的ページに見せたい!

    正規表現で動的ページを静的ページに見せたい! 次のように動的ページを静的ページにしたと考えています。 動的ページ:http://www.mysite.com/myindex.php?year=2010&mon=08&day=06↓ ↓ 静的ページ:http://www.mysite.com/myindex/20100806.html 2010は西暦(4桁)、08は月(2桁)、06は日(2桁)を表す。 .htaccessで正規表現を次のように記述しましたがうまく動作しません。 ご教示いただけますよう宜しくお願いします。 RewriteEngine on RewiteRule ^/myindex/([0-9]+{4})([0-9]+{2})([0-9]+{2}).html$ /myindex.php?year=$1&mon=$2&day=$3[L]

    • ベストアンサー
    • SEO
  • 日付求め

    お世話になります。 早速ですが、perlで以下のように 現在時刻を求め表示するロジックがあります。 ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($time); $year=$year + 1900; $mon =$mon + 1; $date81 = "$year年$mon月$mday日($days[$wday])"; $date82 = "$hour時$min分$sec秒"; この時、 例えば今年末であれば、 2009年1月1日0時と表示されると思います。 これを2008年12月31日24時と表示したいのですが、 何か妙案はあるでしょうか。 宜しくお願いします。

    • ベストアンサー
    • Perl
  • 日付の範囲を月単位で取り出したい

    年月日~年月日を月単位で取り出したいのですが、 phpのリファレンスを見ても、日付に関して使えそうな関数が見当たりませんでした。 ありそうな処理なので、関数の組み合わせで、 スマートな方法はないでしょうか。 最後はどのような配列の形になってもいいのですが、 以下のように分けたいのです。 2011/8/12~2012/3/20 ↓ 2011/8/12, 2011/8/31 2011/9/1,2011,9,31 ・ ・ 2012/3/1~2012/3/20 $period (0 => array('year' =>2011, 'month' => 8, 'day' => 12), 1 => array('year' =>2012, 'month' => 3, 'day' => 20)); こんな感じで年月日が入っています。 function separeted($period){   $start = $period[0];   $end = $period[1];   $result[] = $start;   $result[] = array('year' => $start['year'], 'month' => $start['month'], 'day' => $this->getEndDay($start['month'])); この先、どのようにするかで止まっています。 全く別の方法でも、何かヒントでもいいので、アドバイスください。 getEndDay()関数は、引数の月の最後の日を返す自作関数です。 3月なら31、4月なら30を返します。

    • 締切済み
    • PHP
  • 日付の差分の求め方(日、分)

    NT4WS+VC++6.0 Win32コンソールアプリで作ってます。 現在int型で year1,month1,day1 year2,month2,day2 の様に、1と2それぞれ年月日を持っています。 (year2/month2/day2) - (year1/month1/day1) と言った感じで1と2の差が何日かを求めたいのです。 VBで言うDateDiffみたいなことがやりたいのです。 よろしくお願いします。

  • cgiとhtml

    #!/urs/bin/local/perl use CGI qw(:standard); use Date::Calc qw(:all); $year = param('year'); $mon = param('mon'); if ($year or $mon){ #年、月がないとエラー if (!$year){ &error(100,'年、月を入力して下さい。'); }elsif(!$mon){ &error(110,'年、月を入力して下さい。'); } #年は1以上、月は、1~12の範囲 #紀元前は計算しない if($year < 1){ &error(120,'年に誤りがあります。'); } if($mon < 1 or $mon > 12){ &error(130,'月に誤りがあります。'); } #カレンダーの計算 $cline = Calendar($year,$mon); #先頭行と最終行をとる $cline =~ s/^\n//; $cline =~ s/\n$//; #改行区切りで分割 @Cal = split(/\n/,$cline); #まず、年、月をテーブルに入れる $CAL.=<<"EOL"; <table border="1"> <tr> <td colspan="7" align="center">$year年$mon月</td> </tr> EOL #曜日をテーブルに入れる $CAL.=<<"EOL"; <tr> <td>日</td> <td>月</td> <td>火</td> <td>水</td> <td>木</td> <td>金</td> <td>土</td> </tr> EOL #日付をテーブルに入れる for($i=2; $i<=$#Cal; $i++){ $CAL.= <<"EOL"; <tr> EOL $shift=3; #1日に3文字文使う $s = 0; for ($j=0; $j<7; $j++){ $day = substr($Cal[$i], $s, $shift); if($day !~ /\d/){ $day = '&nbsp;'; #数字がなければスペース }else{ $day =~ s/ //g; #余分なスペースをとる } $CAL.=<<"EOL"; <td align="right">$day</td> EOL $s += $shift #3文字を右へ $s += 1; #2回目からは、区切り文字も計算 } $CAL.=<<"EOL"; </tr> EOL } $CAL.=<<"EOL"; </table> EOL } print <<"EOL"; Content-type: txet/html というプログラムを作ってカレンダーを表示させたいのですが、 HTMLで打つときに <html> <head> <title>カレンダー</title> </head> <body> <from action="report.cgi"> 年:<input type="text" size="4" name="year"> 月:<input type="text" size="2" name="mon"> <br> <input type="submit" value="表示"> </from> <br><br> $CAL(と入れたのですが、画面に%CALと出るだけでカレンダーが表示されません) </body> </html> 何を入れると画面ににきれいにカレンダーが表示されるのでしょうか?

    • ベストアンサー
    • CGI
  • html

    #!/urs/bin/local/perl use CGI qw(:standard); use Date::Calc qw(:all); $year = param('year'); $mon = param('mon'); if ($year or $mon){ #年、月がないとエラー if (!$year){ &error(100,'年、月を入力して下さい。'); }elsif(!$mon){ &error(110,'年、月を入力して下さい。'); } #年は1以上、月は、1~12の範囲 #紀元前は計算しない if($year < 1){ &error(120,'年に誤りがあります。'); } if($mon < 1 or $mon > 12){ &error(130,'月に誤りがあります。'); } #カレンダーの計算 $cline = Calendar($year,$mon); #先頭行と最終行をとる $cline =~ s/^\n//; $cline =~ s/\n$//; #改行区切りで分割 @Cal = split(/\n/,$cline); #まず、年、月をテーブルに入れる $CAL.=<<"EOL"; <table border="1"> <tr> <td colspan="7" align="center">$year年$mon月</td> </tr> EOL #曜日をテーブルに入れる $CAL.=<<"EOL"; <tr> <td>日</td> <td>月</td> <td>火</td> <td>水</td> <td>木</td> <td>金</td> <td>土</td> </tr> EOL #日付をテーブルに入れる for($i=2; $i<=$#Cal; $i++){ $CAL.= <<"EOL"; <tr> EOL $shift=3; #1日に3文字文使う $s = 0; for ($j=0; $j<7; $j++){ $day = substr($Cal[$i], $s, $shift); if($day !~ /\d/){ $day = '&nbsp;'; #数字がなければスペース }else{ $day =~ s/ //g; #余分なスペースをとる } $CAL.=<<"EOL"; <td align="right">$day</td> EOL $s += $shift #3文字を右へ $s += 1; #2回目からは、区切り文字も計算 } $CAL.=<<"EOL"; </tr> EOL } $CAL.=<<"EOL"; </table> EOL } print <<"EOL"; Content-type: txet/html というプログラムを作ってカレンダーを表示させたいのですが、 HTMLで打つときに <html> <head> <title>カレンダー</title> </head> <body> <from action="report.cgi"> 年:<input type="text" size="4" name="year"> 月:<input type="text" size="2" name="mon"> <br> <input type="submit" value="表示"> </from> <br><br> ここに入れるべきものがよくわかりません。 </body> </html> 何を入れるとプログラムにきれいにカレンダーが表示されるのでしょうか?

    • ベストアンサー
    • HTML
  • 「誕生日まであと○日です」

    <html> <head> <title>test</title> </head> <body> <SCRIPT LANGUAGE="javascript" TYPE="text/javascript"> <!-- var weeks = new Array('日','月','火','水','木','金','土'); var now = new Date(); var year = now.getYear(); // 年 var month = now.getMonth() + 1; // 月 var day = now.getDate(); // 日 var week = weeks[ now.getDay() ]; // 曜日 var hour = now.getHours(); // 時 var min = now.getMinutes(); // 分 var sec = now.getSeconds(); // 秒 if(year < 2000) { year += 1900; } // 数値が1桁の場合、頭に0を付けて2桁で表示する指定 if(month < 10) { month = "0" + month; } if(day < 10) { day = "0" + day; } if(hour < 10) { hour = "0" + hour; } if(min < 10) { min = "0" + min; } if(sec < 10) { sec = "0" + sec; } document.write('今日:' + year + '年' + month + '月' + day + '日'); // --> </SCRIPT> </body> </html> これで今日の日付けは表示できたのですが 誕生日が7/31なのですが document.writeで 「誕生日まであと○日です」 と表示するにはどうすれば良いでしょうか?

    • ベストアンサー
    • HTML
  • (年/月/日)の正しい順序は?

    年月日を略式に表示する場合: (1)(月/日/年) (2)(日/月/年) (3)(年/月/日)もありますね。 国際的に通用するのに正しいのはどれですか?

専門家に質問してみよう