15時以降は翌日の日付を表示させたい

Webテンプレート HTML+CSSサンプルコード集



0   名前: saori : 2008/03/19(水) 10:49  ID:jTLOU483 sub-t1
お世話になります。

ホームページ上で品物の発送日を表示させるため、15時より前は本日の日付、15時以降は明日の日付を表示させたいと思います。

html内の表示はこの様な感じです。

今ご注文をいただきますと<script language="JavaScript">
<!--
accessDate();
// --></script>に発送ができます。



スクリプトサンプルを見ながらいじって、js内に以下のように記載してみたのですが、IE7では希望通りの日付が表示されますが、IE6では1月1日と表示されてしまいます。

ここからどのような修正が必要でしょうか。
お分かりになる方がおりましたら、どうかよろしくお願いいたします。


function accessDate()
{
var myDate = new Date();
var myHour = myDate.getHours();

myDate.setHours(myHour+9);

var myMonth = myDate.getMonth()+1;
var myDay = myDate.getDate();

if ( myMonth < 10 ) { myMonth = "0"+myMonth; }
if ( myDay < 10 ) { myDay = "0"+myDay; }
document.write(myDate.getMonth() + 1,"月",myDate.getDate(),"日");
}

1   名前: aki : 2008/03/19(水) 10:49  ID:Ph6Bf8Q4 sub-HD
WindowsXP/IE6 できちんと動いているように見えますけど。
<html>
<head>
<script type="text/javascript">
function accessDate()
{
    var myDate = new Date();           //現在時刻を取得

myDate = new Date( 2007, 2, 18, 14, 59, 59, 0 );//TEST:2007/03/18 14:59:59
//myDate = new Date( 2007, 2, 18, 15, 0, 0, 0 );//TEST:2007/03/18 15:00:00
//myDate = new Date( 2007, 2, 18, 15, 0, 1, 0 );//TEST:2007/03/18 15:00:01
 
    var myHour = myDate.getHours();    //"時"を取り出す
 
    myDate.setHours( myHour+9 );       //9時間プラス
 
    var myMonth = myDate.getMonth()+1; //"月"を取り出す
    //※getMonth()は、たとえば1月の場合0を返す。+1しているのはそのため
    var myDay = myDate.getDate();      //"日"を取り出す
 
    if ( myMonth < 10 ) { myMonth = "0"+myMonth; } //"月"の0埋め(1→01)
    if ( myDay < 10 ) { myDay = "0"+myDay; }       //"日"の0埋め
    //document.write(myDate.getMonth() + 1,"月",myDate.getDate(),"日");
    //※何故myMonthとmyDayを使わないのか?
    document.write(myMonth,"月",myDay,"日");
}
 
accessDate();
</script>
</head>
<body>
 
</body>
</html>
青い部分はコメント、赤い部分は私が追加した部分です。

何日の何時何分でテストしたのでしょうか?

2   名前: ai : 2008/03/19(水) 10:49  ID:RRwY88x6 sub-Ax
>>0
あぁ…、
document.write(myDate.getMonth() + 1,"月",myDate.getDate(),"日");
で再度getMonth(), getDate()使ってるところがおかしいですよ。
myMonth, myDay使いなさいよぅって話です。

3   名前: ai : 2008/03/19(水) 10:49  ID:RRwY88x6 sub-Ax
って
>>1でakiさんがコメントで言ってました…。
(よく見てから発言しなさいよって話だなw)
失礼しました…汗

4   名前: saori : 2008/03/19(水) 10:49  ID:jTLOU483 sub-t1
早速ご回答をいただけましてありがとうございました。

その後IE6のほうのパソコンで、現在時刻を表示させている他のホームページをいくつか見たら、すべて1月1日と表示されていましたので、
スクリプトではなく、IE6の設定か何かがおかしかったようです。

ただ、教えていただけたことでおかしな部分を直せたので、とても助かりました。

投稿して翌日にはご助言をいただき解決するとは思っておりませんでしたので、感動いたしました。
誠にありがとうございました。

5   名前: aki : 2008/03/19(水) 10:49  ID:Ph6Bf8Q4 sub-HD
> 現在時刻を表示させている他のホームページをいくつか見たら、すべて1月1日と表示されていましたので、

ということは、単純にそのパソコンの日付が1月1日になっている、という可能性が一番高そうですね。

#デフォルトであれば、画面の右下、ツールバーの一番端に時刻が出ているはず。
#それをダブルクリックすると端末日付が表示されると思います。


あああ、というか、JavaScriptで日時を出すのだと、端末の日付に依存するんじゃないでしょうか。
そのページを見ているパソコンの日付が狂っていると、発送日も間違ったものが表示されることになります。
重要な日付をJavaScriptで表示するのはちょっと危険な気が。

トラブルの元にならないでしょうか。心配。

6   名前: aki : 2008/03/19(水) 10:49  ID:Ph6Bf8Q4 sub-HD
>>5
あ、あくまで自分のパソコンで見るための、
自分の確認用のページとかだったら大丈夫なんですけど。
(自分のパソコンの時計をちゃんと合わせておけばいいから)

もしお店やなんかのホームページで、
お客さんのパソコンで見た時にJavaScriptで日付を表示させるのだと危ないかなということです。

7   名前: jax_6 ◆4YHFU8HpSy : 2008/03/19(水) 10:49  ID:5WwKRY4N sub-7c
時刻の件について、こんなのもありました。http://jehiah.cz/archive/ntp-for-javascript (よくわからん)

が、
http://www3.nict.go.jp/cgi-bin/JST.pl
のようなリンクを貼っておいて一言注意書きがあれば十分?かなと思います。

8   名前: 匿名 ◆6lOezfNBvA : 2008/03/19(水) 10:49  ID:b1ncmgzD sub-Cz
結局「それは本当に必要なのか?誰のために必要なのか?」という話になってしまう。
// HTTP ヘッダの Date フィールドを利用する

var d;
var req = new XMLHttpRequest;
req.open('GET', '#', false);
req.send(null);

d = new Date(req.getResponseHeader('Date'));

一覧へ戻る