人类可读格式的时间戳

geo*_*ich 82 javascript timestamp

好吧,我在使用javascript从unix时间戳转换为人工表示时遇到了一个奇怪的问题

这是时间戳

1301090400
Run Code Online (Sandbox Code Playgroud)

这是我的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();  
Run Code Online (Sandbox Code Playgroud)

我预计结果将是2011年2月25日22 00 00.但它是2011年,2日,6日,0日,0日,我想念的是什么?

Koo*_*Inc 93

getDay()返回星期几.要获取日期,请使用date.getDate().getMonth()检索月份,但月份为零,所以使用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]
Run Code Online (Sandbox Code Playgroud)

  • @george你不会错过任何东西.这些值是整数,因此不能具有"00"之类的值.您可以轻松地自己附加它,例如`minute =(分钟<10?"0":"")+分钟;` (7认同)

Sho*_*vik 41

var newDate = new Date();
newDate.setTime(unixtime*1000);
dateString = newDate.toUTCString();
Run Code Online (Sandbox Code Playgroud)

unixtime你的sql db返回的时间在哪里.如果它有帮助,这是一个小提琴.

例如,在当前时间使用它:

document.write( new Date().toUTCString() );
Run Code Online (Sandbox Code Playgroud)

  • 2012-05-28T02:47:59Z (4认同)
  • 我在这里得到的内容是“unixtime is undefined” (2认同)

Dav*_*ger 10

我正在寻找一种非常具体的解决方案,用于将当前时间作为保证长度的字符串返回到每个日志行的开头。如果其他人正在寻找同样的东西,它们就在这里。

基本时间戳

"2021-05-26 06:46:33"

以下函数返回当前时间的零填充时间戳(始终为 19 个字符长)

function getTimestamp () {
  const pad = (n,s=2) => (`${new Array(s).fill(0)}${n}`).slice(-s);
  const d = new Date();
  
  return `${pad(d.getFullYear(),4)}-${pad(d.getMonth()+1)}-${pad(d.getDate())} ${pad(d.getHours())}:${pad(d.getMinutes())}:${pad(d.getSeconds())}`;
}
Run Code Online (Sandbox Code Playgroud)

完整时间戳

"2021-06-02 07:08:19.041"

以下函数返回当前时间的零填充时间戳,包括毫秒(始终为 23 个字符长)

function getFullTimestamp () {
  const pad = (n,s=2) => (`${new Array(s).fill(0)}${n}`).slice(-s);
  const d = new Date();
  
  return `${pad(d.getFullYear(),4)}-${pad(d.getMonth()+1)}-${pad(d.getDate())} ${pad(d.getHours())}:${pad(d.getMinutes())}:${pad(d.getSeconds())}.${pad(d.getMilliseconds(),3)}`;
}
Run Code Online (Sandbox Code Playgroud)


小智 9

使用Date.prototype.toLocaleTimeString()作为记录在这里

请注意 url 中的语言环境示例 en-US。


Hos*_*ein 7

小时,分钟和秒取决于操作系统的时区.在格林威治标准时间(UST)它是22:00:00但在不同的时区它可以是任何东西.因此,将时区偏移量添加到创建GMT日期的时间:

var d = new Date();
date = new Date(timestamp*1000 + d.getTimezoneOffset() * 60000)
Run Code Online (Sandbox Code Playgroud)

  • @BrunoGomes他假设时间戳以秒为单位,而javascript则以毫秒为单位. (2认同)

小智 7

这是kooilnc的答案w/padded 0's

function getFormattedDate() {
    var date = new Date();

    var month = date.getMonth() + 1;
    var day = date.getDate();
    var hour = date.getHours();
    var min = date.getMinutes();
    var sec = date.getSeconds();

    month = (month < 10 ? "0" : "") + month;
    day = (day < 10 ? "0" : "") + day;
    hour = (hour < 10 ? "0" : "") + hour;
    min = (min < 10 ? "0" : "") + min;
    sec = (sec < 10 ? "0" : "") + sec;

    var str = date.getFullYear() + "-" + month + "-" + day + "_" +  hour + ":" + min + ":" + sec;

    /*alert(str);*/

    return str;
}
Run Code Online (Sandbox Code Playgroud)


har*_*rry 7

要直接获取可读的本地时区:

var timestamp = 1301090400,
date = new Date(timestamp * 1000)
document.write( date.toLocaleString() );
Run Code Online (Sandbox Code Playgroud)