我在使用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日 我错过了什么?
答案 0 :(得分:86)
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]
答案 1 :(得分:37)
var newDate = new Date();
newDate.setTime(unixtime*1000);
dateString = newDate.toUTCString();
其中unixtime
是您的sql db返回的时间。如果它有帮助,这是fiddle。
例如,将其用于当前时间:
document.write( new Date().toUTCString() );
答案 2 :(得分:7)
小时,分钟和秒取决于操作系统的时区。在GMT(UST)中它是22:00:00但在不同的时区它可以是任何东西。因此,将时区偏移量添加到创建GMT日期的时间:
var d = new Date();
date = new Date(timestamp*1000 + d.getTimezoneOffset() * 60000)
答案 3 :(得分:7)
这是kooilnc的回答w / padded 0&#39>
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;
}
答案 4 :(得分:3)
使用here
记录的var newArray = [];
for(var i = 0; i < name.length; i++){
var newObj = name[i];
newObj.details = [];
var id = name[i].id;
for(var j = 0; j < temp_data.length; j++){
if(id == temp_data[j].id){
newObj.details.push({date : temp_data[j].date});
}
}
newArray.push(newObj);
}
请注意网址中的语言环境示例en-US。
答案 5 :(得分:1)
我正在寻找一种非常具体的解决方案,用于将当前时间作为保证长度的字符串返回到每个日志行的开头。如果其他人正在寻找相同的东西,它们就在这里。
"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())}`;
}
"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)}`;
}