【问题标题】:Convert date to UnixTimeStamp将日期转换为 Unix 时间戳
【发布时间】:2016-04-24 16:08:17
【问题描述】:

我已尝试将(2016 年 1 月 19 日星期二 17:26:24 IST)日期转换为时间戳 但输出是 NaN。我想在特定时间加24小时。

我用过 JavaScript

var nowDate = new Date("Tue Jan 19 17:26:24 IST 2016");
    var date = nowDate.getTime();
var deadline = new Date(Date.parse(new Date(date)) + 1 * 24 * 60 * 60 * 1000);  

最后期限返回 NaN 值。

【问题讨论】:

  • 在考虑生成 Unix 时间戳之前,您需要获取一个 Date 对象,并且当我在 Node 中运行时,您的第一行代码会触发“Invalid Date”。
  • 你总是有相同的格式(时区之后的年份)还是免费输入?
  • 你试过 valueOf() 吗? w3schools.com/jsref/jsref_valueof_date.asp
  • Date.parse(new Date(date)) 的意义何在?除了截断毫秒之外,它仅相当于date...
  • 您的最后一行没有意义:new Date(date) 是一个 Date 对象,但 Date.parse 需要一个字符串。另一方面,您不需要解析

标签: javascript datetime unix-timestamp epoch


【解决方案1】:

我强烈建议使用一个用于 DateTime 算法的库,例如辉煌:

但是,如果您希望获得 UNIX 有效时间戳,您可以使用以下命令:

var Unix = Math.round((Date.parse(date/1000);

或者,查看this stack overflow question

【讨论】:

  • 也可以看看this
【解决方案2】:

如果您能够以标准格式获取日期字符串,则可以这样做。 (还有其他标准格式:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse

var ts = Date.parse("2016-01-19T17:26:24"); // either this
var ts = Date.parse("Tue, 19 Jan 2016 17:26:24 (IST)"); // or this format
var deadline = new Date(t + 24*3600*1000);

根据您的数据库中的内容,您需要以标准格式获取日期,或者如果将其保存为字符串,那么您可以将其切成小块并在我的示例中以正确的格式重新组合在一起

【讨论】:

  • 它工作正常。但是这里的日期是硬编码的。但在我的约会年份是在时区之后。那么如何将该日期更改为正确的日期?
  • 它不是硬编码的,它与您在问题中尝试的日期相同,只是格式不同。另一种可能的标准格式是:Date.parse("Tue, 19 Jan 2016 17:26:24 (IST)")
猜你喜欢
  • 2020-10-19
  • 2020-12-23
  • 2012-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-09
  • 1970-01-01
相关资源
最近更新 更多