1. ホーム
  2. javascript

[解決済み] タイムスタンプの可読形式への変換

2023-01-01 16:15:38

質問

javascriptを使ってunixのタイムスタンプを人間の表現に変換する際に、奇妙な問題が発生しました。

以下はタイムスタンプです。

1301090400

これは私のjavascriptです。

var date = new Date(timestamp * 1000);
var year    = date.getFullYear();
var month   = date.getMonth();
var day     = date.getDay();
var hour    = date.getHours();
var minute  = date.getMinutes();
var seconds = date.getSeconds();  

私は結果が2011 2, 25 22 00 00になることを期待しました。しかし、それは2011年、2、6、0、0、0です。 私は何を見逃すのですか?

どのように解決するのですか?

getDay() は曜日を返します。日付を取得するには date.getDate() . getMonth() は月を取得しますが、month はゼロベースで、そのため getMonth()+1 を使えば正しい月が得られるはずです。時間の値は、ここでは23時間(GMT+1)ですが、大丈夫なようです。もし世界共通の値が必要なら UTC をメソッドに追加してください (例. date.getUTCFullYear() , date.getUTCHours() )

var timestamp = 1301090400,
date = new Date(timestamp * 1000),
datevalues = [
   date.getFullYear(),
   date.getMonth()+1,
   date.getDate(),
   date.getHours(),
   date.getMinutes(),
   date.getSeconds(),
];
alert(datevalues); //=> [2011, 3, 25, 23, 0, 0]