JavaScriptのタイムゾーン処理

2554 ワード

いくつかの概念
  • UTC時間は標準時間で、GMT時間はUTC時間より多くの誤差があります.
  • 北京時間はUTCより8時間早いです.
  • データベース時間(Postgres)
    データベースは、タイムゾーンがある時間とタイムゾーンがない時間を格納し、後者を使用する場合が多い.createまたはupdateから与えられた時間パラメータがタイムゾーン表示されている場合、データベースは定義されたデータタイプに基づいてタイムゾーンを自動的に変換し、タイムゾーンが与えられていない場合、デフォルトは標準時間と見なされる.
  • パラメータはタイムゾーンがなく、データベースにタイムゾーンがあります.
  • パラメータ:2017-02-12 16:00:00
  • 預け入れ後:2017-02-12 16:00:00+00
  • パラメータはタイムゾーンがあり、データベースにタイムゾーンがあります.
  • パラメータ:2017-02-12 16:00:00+08
  • 預け入れ後:2017-02-12 16:00:00+08
  • パラメータはタイムゾーンがなく、データベースはタイムゾーンがありません.
  • パラメータ:2017-02-12 16:00:00
  • 預け入れ後:2017-02-12 16:00:00
  • パラメータはタイムゾーンがあり、データベースにタイムゾーンがあります.
  • パラメータ:2017-02-12 16:00:00+08
  • 預け入れ後:2017-02-13 00:00:00+00
  • JavaScriptの基本的な転化方式
    JavaScriptのnew Date()関数は、ローカル時間を生成する.
    JavaScript
    Resoultnew DateMon Feb 13 2017:00:00 GMT+0800(CST)toDateStringMon Feb 13 2017toGMTStringSun,12 Feb 2017 16:00 GMTtoISOString2017-02-12 T 16:00:00.000 ZtoJSON2017-02-12 T 16:00:00.000 ZtoLocaleDateString2/13/2017toLocaleTimeString12:00:00 AMtoLocaleString2/13/2017、12:00 AMtoStringMon Feb 13 2017:00:00 GMT+0800(CST)toTimeString00:00:00 GMT+0800(CST)toUTCStringSun,12 Feb 2017 16:00 GMT
    UTC時間は現地時間に変わります.
    var toLocal = function(date) {
      //   date    Date object
      date = new Date(date);
      var local = date.toLocaleString('en-US', {
        hour12: false,
        year: 'numeric',
        month: '2-digit',
        day: '2-digit',
        hour: '2-digit',
        minute: '2-digit',
        second: '2-digit'
      });
      return local;
    };
    
  • は、toLocaleString()方式でタイムゾーンを変換することで、スタイルをカスタマイズして表示することができます.
  • ローカル時間UTC時間
    全体的な転換
    var toUTC = function(date) {
      //   date    Date object
      date = new Date(date);
      //   "+08"        
      var utc = date.toISOString().replace(/Z/, "+00");
      return utc;
    };
    
    日付データの抽出
  • 取得年:var y = date.getUTCFullYear();
  • 取得月:var m = date.getUTCMonth() ;
  • 取得日:var d = date.getUTCDate();
  • 時間取得:var h = date.getUTCHours();
  • 分取得:var M = date.getUTCMinutes();
  • 取得秒:var s = date.getUTCSeconds();