【jQuery】$.ajaxで取得したファイルが、更新からn時間以上経過していたら|Blog|株式会社トライム

Keyword

Contact

についての不明点や案件のご相談などございましたらお気軽にお問い合わせください。

Share

X Facebook pocket LINE はてなブックマーク

【jQuery】$.ajaxで取得したファイルが、更新からn時間以上経過していたら

2016.11.24

ファイルの更新時間と現在時刻を比較

アクセスしたファイルが更新から24時間以上経過していたら、
という処理をjQueryで書く必要があり、色々努力した結果下記のようになりました。

$.ajax({
  url:'file.txt',
  success: function( data, status, request ){

    var time  = new Date( request.getResponseHeader('Last-Modified') ), //ファイル更新時間
        now   = new Date( $.now() ), //現在時刻
        hours = Math.abs( now - time ) / 36e5; //時間差を計算

    if ( hours > 24 ) {
      alert( '24時間以上経過' );
    } else {
      alert( '24時間以内' );
    }

  }
});

5行目でレスポンスヘッダのLast-Modifiedを取得。
Last-Modifiedはファイルの最終更新日を返します。

7行目の「36e5」は60 * 60 * 1000の科学記法です。

なおPHPでも同様のことが出来ます。

【PHP】別ドメインのファイルが、更新からn時間以上経過していたら

おまけ、取得したLast-Modifiedをyyyy/MM/dd HH:mm:ssにする

Last-Modifiedはそのままだと、下記のようなフォーマットです。

Mon Nov 21 2016 16:34:11 GMT+0900 (JST)

これをyyyy/MM/dd HH:mm:ssに変換します。

$.ajax({
  url:'file.txt',
  success: function( data, status, request ){
 
    var time  = new Date( request.getResponseHeader('Last-Modified') );
    alert(date_format(time))
 
  }
});

function date_format( time ) {
  var yy = zero_pad( time.getFullYear() ),
      mm = zero_pad( time.getMonth() + 1 ),
      dd = zero_pad( time.getDate() ),
      h  = zero_pad( time.getHours() ),
      m  = zero_pad( time.getMinutes() ),
      s  = zero_pad( time.getSeconds() );
 
  return time = yy + '/' + mm + '/' + dd + ' ' + h + ':' + m + ':' + s;
}
 
function zero_pad( numb ) {
  return ( numb < 10 ? '0' : '' ) + numb;
}

getMonthで月を取得すると英単語だった月名が、0〜11の数字になって帰ってきます。
日本人は1〜12月の感覚ですが、英表記ではもともと数字ではないので、
これでも自然に感じるのでしょうか? とりあえず、1を足しておきました。

そういでば、Octoberも本来は8番目の月という意味ですから、
英語圏の方々には月に関して、数字はあんまり重要じゃないのかもしれません。

ずれたのは古代ローマ人がカエサルとアウグストゥスを神格化し、
彼らの誕生月にその名前を冠したため、というのは有名な話ですよね。

Share

X Facebook pocket LINE はてなブックマーク
Webサイト制作についてお悩みでしたら私たちにご相談ください。

私たちはECサイトなどのBtoCのサイトの制作に特化したWeb制作会社です。マーケティング視点をもったクリエイティブにより、運用まで見据えた効果の高いWebサイトを構築いたします。Webサイトについてお悩みのWeb担当者の方は、トライムまでお気軽にご相談ください。

Keyword

Contact

についての不明点や案件のご相談などございましたらお気軽にお問い合わせください。

Contact

お問い合わせ

トライムは常にお客様へ寄りっ沿った提案をさせていただきます。
自社のEC売上の拡大や人材不足などのお客様のデジタル上の課題を、
様々なアプローチにより解決するお手伝いをいたします!
お気軽にお問い合わせください。

TEL

03-6403-3259

受付:10:00 - 19:00