如何将毫秒转换为可读日期?

46

以下内容:

new Date(1324339200000).toUTCString()

输出:

"Tue, 20 Dec 2011 00:00:00 GMT"

我需要它返回 Dec 20。除了使用 toUTCString(),还有其他更好的方法吗?我正在寻找任何一种可以解析毫秒数以返回可读日期的方法。


4
它确实返回了一个可读的日期。你只是想知道如何以特定的方式格式化日期吗?(参考链接:https://dev59.com/z3NA5IYBdhLWcg3wL6yx) - Blazemonger
@mblase75,没错,就是这样 - Christian Fazzini
moment.js 库也可以使用 http://momentjs.com/ - nu everest
7个回答

51

Datejs在http://code.google.com/p/datejs/downloads/list上最后更新于2007年?这是你建议的同一个库吗? - Christian Fazzini
@Christian Fazzini:是的,它有点老了(http://www.datejs.com/也说明了这一点)。不过它仍然可以正常工作 :) - pimvdb
3
@pimvdb,你的小提琴代码输出结果是这样的:Tue Dec 20 2011 05:30:00 GMT+0530 (印度标准时间),我只需要Tue Dec 20 2011 05:30:00这部分。 - mahendrakawde
2
我认为应该强调“使用Datejs库”这几个词! - Alexander Gorg

50

你可以使用datejs并将其转换为不同的格式。我已经测试了一些格式,它们都运行良好。

var d = new Date(1469433907836); // Parameter should be long value

d.toLocaleString()     // 7/25/2016, 1:35:07 PM
d.toLocaleDateString() // 7/25/2016
d.toDateString()       // Mon Jul 25 2016
d.toTimeString()       // 13:35:07 GMT+0530 (India Standard Time)
d.toLocaleTimeString() // 1:35:07 PM
d.toISOString();       // 2016-07-25T08:05:07.836Z
d.toJSON();            // 2016-07-25T08:05:07.836Z
d.toString();          // Mon Jul 25 2016 13:35:07 GMT+0530 (India Standard Time)
d.toUTCString();       // Mon, 25 Jul 2016 08:05:07 GMT

确保将整数作为日期参数传递,如果您传递字符串,它会显示无效数据。 - thisshri
请查看 https://jsfiddle.net/Abeeee/yc7q4owa/4/ 以获取此工作示例。 - user1432181

18
不需要,你需要手动完成。
function prettyDate(date) {
  var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
                'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];

  return months[date.getUTCMonth()] + ' ' + date.getUTCDate() + ', ' + date.getUTCFullYear();
}

console.log(prettyDate(new Date(1324339200000)));


6

这是一个解决方案。稍后您可以通过“:”进行分割,并获取数组的值。

 /**
 * Converts milliseconds to human readeable language separated by ":"
 * Example: 190980000 --> 2:05:3 --> 2days 5hours 3min
 */
function dhm(t){
    var cd = 24 * 60 * 60 * 1000,
        ch = 60 * 60 * 1000,
        d = Math.floor(t / cd),
        h = '0' + Math.floor( (t - d * cd) / ch),
        m = '0' + Math.round( (t - d * cd - h * ch) / 60000);
    return [d, h.substr(-2), m.substr(-2)].join(':');
}

//Example
var delay = 190980000;                   
var fullTime = dhm(delay);
console.log(fullTime);

4
您只需使用几行纯JS代码即可实现此功能。
var date = new Date(1324339200000);
    var dateToStr = date.toUTCString().split(' ');
    var cleanDate = dateToStr[2] + ' ' + dateToStr[1] ;
console.log(cleanDate);

返回12月20日。希望对您有所帮助。


2

我刚刚测试了这个,它运行得很好。

var d = new Date(1441121836000);

数据对象有一个构造函数,它以毫秒为参数。

1

lonesomeday的示例(点赞那个答案而不是这个)的基础上,我遇到了这个输出:

undefined NaN, NaN

var datetime = '1324339200000'; //LOOK HERE

function prettyDate(date) {
  var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
                'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];

  return months[date.getUTCMonth()] + ' ' + date.getUTCDate() + ', ' + date.getUTCFullYear();
}

console.log(prettyDate(new Date(datetime))); //AND HERE

原因是使用字符串作为输入。要修复它,请在字符串前加上加号:

prettyDate(new Date(+datetime));

var datetime = '1324339200000';

function prettyDate(date) {
  var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
                'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];

  return months[date.getUTCMonth()] + ' ' + date.getUTCDate() + ', ' + date.getUTCFullYear();
}

console.log(prettyDate(new Date(+datetime))); //HERE

将“小时/分钟”添加到输出中:

var datetime = '1485010730253';

function prettyDate(date) {
  var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
                'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];

  return months[date.getUTCMonth()] +' '+ date.getUTCDate()+ ', '+ date.getUTCHours() +':'+ date.getUTCMinutes();
}

console.log(prettyDate(new Date(+datetime)));


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接