我是否应该使用日期对象或整数时间戳来处理JavaScript中的日期



您建议使用

a) new Date(...)

返回的日期-Object

b)毫秒以来, Date.parse(...)

返回

用于在客户端/浏览器JavaScript应用程序中处理日期?
我很想听听您有过的任何经历或遇到的陷阱。

我的担心主要是比较,例如new Date()(如果A)和我从服务器收到的日期 - 或在B中与Date.now()进行比较的情况。

日期是从服务器的字符串值实例化的,该值是2011-10-10T14:48:00Z(ISO 8601)

的形式。

我将使用带有dateformat的日期对象来解析和格式日期:

    DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSX");

与许多事情一样,这取决于您的用例。

通常,自段以来,您会使用毫秒更安全的时间,尤其是当您需要操纵日期或将其存储在代码外的某个地方。

日期是毫秒,因为它是一个数字,并且我们有很多操纵数字的工具。您可以使用Date提供的转换器在数字和实际Date实例之间切换,当您需要做一些更喜欢的事情,例如显示日期,获取一周的一天等。

日期作为毫秒更安全,因为从服务器的日期字符串中已经知道,大多数语言对它们的结构和存储日期的方式都有不同的实现,但是大多数语言以相同的方式处理数字。同样,使用毫秒可灵活地以您工作的任何语言将数字转换为Date实现。


如果您有兴趣使用第三方库与日期更轻松地使用日期,我强烈建议您查看date-fns

您可以从new Date(...)本身获得milliseconds since epoch

例如,

var date = new Date();
var epoch = date.getTime();//A number representing the milliseconds
                          // elapsed between 1 January 1970 00:00:00 
                         //UTC and the given date.

我更喜欢新的date(),因为我们有多个构造函数来初始化日期。例如,我们可以做

Date.parse("2012")// returns 1325376000000
Date.parse("2012","12")// also returns 1325376000000

但是

var d = new Date("2012")
// return Sun Jan 01 2012 05:30:00 GMT+0530 (IST)
d = new Date("2012", "01")
// Wed Feb 01 2012 00:00:00 GMT+0530 (IST)

最新更新