我想使用javascript将UTC时间值(例如,1367214805)转换为日期(以dd-mm-yyyy)格式。
对于例如在PHP中,如果我们使用...
<?php Date("d-m-Y",'1367214805'); ?>
...我们直接以dd-mm-yyyy格式获取日期。
javascript中有这样的功能吗? - 我在javascript中以各种方式尝试了Date(),但每次打印现在的日期和时间!!
谢谢
JavaScript使用毫秒时代,因此您需要将您的数字乘以1000。
var t = 1367214805;
var d = new Date(t * 1000);
然后有.getUTCxxx
方法来获取你想要的字段,然后你可以零填充和连接以获得所需的字符串。
function epochToDate(t) {
function pad2(n) {
return n > 9 ? n : '0' + n;
}
var d = new Date(t * 1000);
var year = d.getUTCFullYear();
var month = d.getUTCMonth() + 1; // months start at zero
var day = d.getUTCDate();
return pad2(day) + '-' + pad2(month) + '-' + year;
}
看看Moments.js,您应该能够轻松获得您想要的任何格式。
console.log(new Date());
console.log(moment().format("D-M-YY"));
console.log(moment(1367214805 * 1000).format("DD-MM-YY"));
您可以使用toISOString方法,然后忽略T
之后的所有内容,例如
var isoDateStr = myDate.toISOString();
isoDateStr = isoDateStr.substring(0, isoDateStr.indexOf('T'));
这将为您提供标准的UTC日期格式yyyy-mm-dd。如果您需要专门将日期格式化为dd-mm-yyyy,那么您可以获取该结果并切换值,即
isoDateStr = isoDateStr.split('-').reverse().join('-');
你可以试试这个:
myDate.toISOString().split('T')[0].split('-').reverse().join('-')
为什么不使用getUTCxxx()
方法?
function formatUTC(time_UTC_in_milliseconds_since_epoch) {
/*
* author: WesternGun
*/
var time = new Date(time_UTC_in_milliseconds_since_epoch);
var formatted = time.getUTCFullYear() + "-"
+ (time.getUTCMonth() + 1).toString() + "-"
+ time.getUTCDate() + " "
+ time.getUTCHours() + ":"
+ time.getUTCMinutes() + ":"
+ time.getUTCSeconds();
return formatted;
}
请记住在月份中添加1,因为getUTCMonth()
的返回值范围是0~11
。
根据您的意见,我们有:
formatUTC(1367214805 * 1000); // return "2013-4-29 5:53:25"
要将数字格式化为\d\d
格式,只需创建另一个函数:
function normalizeNumber(input, toAdd) {
if (parseInt(input) < 10) {
return toAdd + input;
} else {
return input;
}
}
并使用它像normalizeNumber((time.getUTCMonth() + 1).toString(), "0")
等。