1454

MySQL データベースに時刻を Unix タイムスタンプとして保存していて、JavaScript コードに送信されます。どうすればそれから時間を得ることができますか?

たとえば、HH/MM/SSフォーマットで。

4

32 に答える 32

2094

let unix_timestamp = 1549312452
// Create a new JavaScript Date object based on the timestamp
// multiplied by 1000 so that the argument is in milliseconds, not seconds.
var date = new Date(unix_timestamp * 1000);
// Hours part from the timestamp
var hours = date.getHours();
// Minutes part from the timestamp
var minutes = "0" + date.getMinutes();
// Seconds part from the timestamp
var seconds = "0" + date.getSeconds();

// Will display time in 10:30:23 format
var formattedTime = hours + ':' + minutes.substr(-2) + ':' + seconds.substr(-2);

console.log(formattedTime);

Date オブジェクトの詳細については、MDNまたはECMAScript 5 仕様を参照してください。

于 2009-05-11T08:28:50.977 に答える
345

function timeConverter(UNIX_timestamp){
  var a = new Date(UNIX_timestamp * 1000);
  var months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
  var year = a.getFullYear();
  var month = months[a.getMonth()];
  var date = a.getDate();
  var hour = a.getHours();
  var min = a.getMinutes();
  var sec = a.getSeconds();
  var time = date + ' ' + month + ' ' + year + ' ' + hour + ':' + min + ':' + sec ;
  return time;
}
console.log(timeConverter(0));

于 2011-05-21T00:44:36.023 に答える
246

JavaScript はミリ秒単位で動作するため、最初に UNIX タイムスタンプを秒からミリ秒に変換する必要があります。

var date = new Date(UNIX_Timestamp * 1000);
// Manipulate JavaScript Date object here...
于 2009-05-11T08:31:47.977 に答える
111

モダン ソリューション (2020 年版)

新しい世界では、メソッドを持つ便利なコンストラクターをIntl持つ標準の JavaScript オブジェクトに移行する必要があります。DateTimeFormat.format()

function format_time(s) {
  const dtFormat = new Intl.DateTimeFormat('en-GB', {
    timeStyle: 'medium',
    timeZone: 'UTC'
  });
  
  return dtFormat.format(new Date(s * 1e3));
}

console.log( format_time(12345) );  // "03:25:45"


永遠の解決

しかし、すべてのレガシー JavaScript エンジンと 100% 互換性を持たせるために、秒をhh:mm:ss次のようにフォーマットする最短のワンライナー ソリューションを次に示します。

function format_time(s) {
  return new Date(s * 1e3).toISOString().slice(-13, -5);
}

console.log( format_time(12345) );  // "03:25:45"

メソッドDate.prototype.toISOString()は、簡略化された拡張ISO 8601形式で時間を返します。これは、常に24 文字または 27 文字の長さです (つまり、それぞれYYYY-MM-DDTHH:mm:ss.sssZまたは ±YYYYYY-MM-DDTHH:mm:ss.sssZそれぞれ)。タイムゾーンは常にゼロ UTC オフセットです。

このソリューションはサードパーティのライブラリを必要とせず、すべてのブラウザーと JavaScript エンジンでサポートされています。

于 2016-03-09T11:37:06.480 に答える
88

私は、PHPの関数Date.format()のスタイルでJavaScriptの日付フォーマットを実装するJacobWrightのライブラリに部分的です。date()

new Date(unix_timestamp * 1000).format('h:i:s')
于 2012-10-11T21:02:04.497 に答える
34

momentjs.comのようなライブラリを使用することを検討します。これにより、これが非常に簡単になります。

Unix タイムスタンプに基づく:

var timestamp = moment.unix(1293683278);
console.log( timestamp.format("HH/mm/ss") );

MySQL 日付文字列に基づく:

var now = moment("2010-10-10 12:03:15");
console.log( now.format("HH/mm/ss") );
于 2013-11-11T10:30:14.167 に答える
29

現時点では、UNIX タイムスタンプを使用する必要があります。

const dateTimeString = moment.unix(1466760005).format("DD-MM-YYYY HH:mm:ss");
于 2016-06-24T09:26:30.607 に答える
24

UNIX タイムスタンプは、1970 年 1 月 1 日の 00:00:00 UTC からの秒数です ( Wikipediaによる)。

Javascript の Date オブジェクトの引数は、1970 年 1 月 1 日の 00:00:00 UTC からのミリ秒数です (W3Schools Javascript ドキュメントによる)

例として、以下のコードを参照してください。

    function tm(unix_tm) {
        var dt = new Date(unix_tm*1000);
        document.writeln(dt.getHours() + '/' + dt.getMinutes() + '/' + dt.getSeconds() + ' -- ' + dt + '<br>');

    }

tm(60);
tm(86400);

与えます:

1/1/0 -- Thu Jan 01 1970 01:01:00 GMT+0100 (Central European Standard Time)
1/0/0 -- Fri Jan 02 1970 01:00:00 GMT+0100 (Central European Standard Time)
于 2009-05-11T08:38:46.937 に答える
19

Moment.jsを使用すると、次のように時刻と日付を取得できます。

var dateTimeString = moment(1439198499).format("DD-MM-YYYY HH:mm:ss");

そして、これを使用して時間だけを取得できます:

var timeString = moment(1439198499).format("HH:mm:ss");
于 2015-08-10T11:48:09.277 に答える
16

前述の解決策の問題点は、時、分、または秒が 1 桁 (つまり 0-9) しかない場合、時刻が間違っていることです。たとえば、2:3:9 になる可能性がありますが、02 にする必要があります。 03:09。

このページによると、Date の "toLocaleTimeString" メソッドを使用する方が良い解決策のようです。

于 2011-11-01T19:11:18.483 に答える
15

別の方法 - ISO 8601の日付から。

var timestamp = 1293683278;
var date = new Date(timestamp * 1000);
var iso = date.toISOString().match(/(\d{2}:\d{2}:\d{2})/)
alert(iso[1]);

于 2012-05-10T14:24:29.613 に答える
13
function getTIMESTAMP() {
  var date = new Date();
  var year = date.getFullYear();
  var month = ("0" + (date.getMonth() + 1)).substr(-2);
  var day = ("0" + date.getDate()).substr(-2);
  var hour = ("0" + date.getHours()).substr(-2);
  var minutes = ("0" + date.getMinutes()).substr(-2);
  var seconds = ("0" + date.getSeconds()).substr(-2);

  return year + "-" + month + "-" + day + " " + hour + ":" + minutes + ":" + seconds;
}

//2016-01-14 02:40:01
于 2016-01-14T00:43:34.847 に答える
10

40 KB のライブラリを必要としない最新のソリューション:

Intl.DateTimeFormatは、日付/時刻をフォーマットする非文化的な帝国主義的な方法です。

// Setup once
var options = {
    //weekday: 'long',
    //month: 'short',
    //year: 'numeric',
    //day: 'numeric',
    hour: 'numeric',
    minute: 'numeric',
    second: 'numeric'
},
intlDate = new Intl.DateTimeFormat( undefined, options );

// Reusable formatter
var timeStamp = 1412743273;
console.log( intlDate.format( new Date( 1000 * timeStamp ) ) );
于 2014-10-08T04:41:20.590 に答える
8

いくつかの答えでゼロの問題に注意してください。たとえば、タイムスタンプ1439329773は誤って に変換され12/08/2015 0:49ます。

この問題を克服するために、以下を使用することをお勧めします。

var timestamp = 1439329773; // replace your timestamp
var date = new Date(timestamp * 1000);
var formattedDate = ('0' + date.getDate()).slice(-2) + '/' + ('0' + (date.getMonth() + 1)).slice(-2) + '/' + date.getFullYear() + ' ' + ('0' + date.getHours()).slice(-2) + ':' + ('0' + date.getMinutes()).slice(-2);
console.log(formattedDate);

結果は次のようになります。

12/08/2015 00:49
于 2015-08-11T22:09:32.037 に答える
6
// Format value as two digits 0 => 00, 1 => 01
function twoDigits(value) {
   if(value < 10) {
    return '0' + value;
   }
   return value;
}

var date = new Date(unix_timestamp*1000);
// display in format HH:MM:SS
var formattedTime = twoDigits(date.getHours()) 
      + ':' + twoDigits(date.getMinutes()) 
      + ':' + twoDigits(date.getSeconds());
于 2012-10-04T15:34:32.127 に答える
5
function timeConverter(UNIX_timestamp){
 var a = new Date(UNIX_timestamp*1000);
     var hour = a.getUTCHours();
     var min = a.getUTCMinutes();
     var sec = a.getUTCSeconds();
     var time = hour+':'+min+':'+sec ;
     return time;
 }
于 2011-05-21T00:54:49.763 に答える
5

日付/エポック コンバーターを参照してください。

する必要がありますParseInt。そうしないと機能しません。


if (!window.a)
    window.a = new Date();

var mEpoch = parseInt(UNIX_timestamp);

if (mEpoch < 10000000000)
    mEpoch *= 1000;

------
a.setTime(mEpoch);
var year = a.getFullYear();
...
return time;
于 2012-02-16T14:45:57.363 に答える
3

Unix の期間を実際の時間、分、秒に変換する場合は、次のコードを使用できます。

var hours = Math.floor(timestamp / 60 / 60);
var minutes = Math.floor((timestamp - hours * 60 * 60) / 60);
var seconds = Math.floor(timestamp - hours * 60 * 60 - minutes * 60 );
var duration = hours + ':' + minutes + ':' + seconds;
于 2014-03-14T15:23:54.407 に答える