Javascript 将日期时间字符串转换为纪元

IT技术 javascript datetime epoch
2021-03-11 03:21:25

所以我放弃了……一整天都在尝试这样做;

我有一个字符串,它以dd/MM/yyyy hh:mm( 04/12/2012 07:00)格式提供日期和时间

我需要把它变成一个纪元日期,这样我就可以对它进行一些计算。我无法修改发送给我的日期时间的格式。

JavaScript 或 jQuery 都可以。

6个回答
var someDate = new Date(dateString);
someDate = someDate.getTime();
我无法修改字符串输入,因为它是以那种格式从数据库发送的。我使用了来自 Bergi 的解决方案,但感谢您的回应!
2021-04-27 03:21:25
嗯好吧...所以你为什么不能修改发送给你的格式?如果你不能修改发送给你的原始值我可以理解,但是你不能在你得到它之后重新格式化它吗?如果是这样,您可以.split在空间然后/:并获取零件并将它们重新排序为可识别的格式new Date()
2021-05-04 03:21:25
不错的尝试,但正如上面的格式一样,这会将 12 月 4 日变成 4 月 12 日(2012 年 4 月 12 日星期四 07:00:00 UTC+0100)。
2021-05-18 03:21:25
好的,原则上,他完全按照我所说的做了……取字符串并将各部分重新排序为 js 函数可识别的格式。很高兴听到你得到答案!
2021-05-18 03:21:25

您可以使用Date.parse(date).

function epoch (date) {
  return Date.parse(date)
}

const dateToday = new Date() // Mon Jun 08 2020 16:47:55 GMT+0800 (China Standard Time)
const timestamp = epoch(dateToday)

console.log(timestamp) // => 1591606075000
我不知道为什么没有人投票,但这就像一个魅力......
2021-04-23 03:21:25
这应该是有效的答案。
2021-04-24 03:21:25

JavaScript 日期在内部存储为自纪元以来的毫秒数。您只需要将其转换为数字,例如使用一元运算+符,即可获得它们。或者你可以使用.getTime方法

解析您的日期字符串将更加困难。您可能会使用正则表达式从字符串中提取值并将它们传递到Date.UTC

var parts = datestring.match(/(\d{2})\/(\d{2})\/(\d{4}) (\d{2}):(\d{2})/);
return Date.UTC(+parts[3], parts[2]-1, +parts[1], +parts[4], +parts[5]);

这将产生1354604400000 ms您的示例日期。

@John 是的,UTC 时间戳(整数)是在服务器和客户端之间传输日期的首选格式。或者使用带有时区指示符的 ISO 8601 字符串,不支持这些的浏览器在我写这个答案后就消失了。
2021-05-14 03:21:25
他从月份字段中减去 1 的原因是月份基于 0 索引。这意味着一月是“0”。不是 1。十二月是 11。不是 12。奇怪但真实。
2021-05-15 03:21:25
这太复杂了。Math.floor(new Date('12/04/2012 07:00') / 1000)工作得很好。您可能需要进行一些字符串操作来翻转月和日值,但这不是问题,它仍然比您在此处获得的代码更简单。
2021-05-16 03:21:25
@John 不,它不能正常工作,有许多浏览器不同意如何解释该格式,以及它是否07:00以 UTC 或07:00本地时区表示。
2021-05-16 03:21:25
@Bergi 我从来没有考虑过如此基本的东西在整个网络上会不一致。那么这是否意味着需要收集用户语言环境以确定日期时间是否为 UTC?或者,是否可以只使用服务器设置时间戳并让浏览器根据用户区域设置解释其本地时间?我想只要您所有的时间戳都基于相同的服务器时间,用户设置他们的语言环境就是真正需要发生的一切。在这种方法中我还有什么遗漏吗?
2021-05-21 03:21:25

您可以使用 momentjs 库轻松完成此操作。

var epoch = moment(str).unix();

http://momentjs.com/

我使用此代码将我的字符串日期时间转换为纪元

new Date(<datetime string>').getTime()

例如 :

let epoch = new Date('2016-10-11').getTime()
似乎缺少依赖项定义- Fatal error: Date(...).getTime is not a function
2021-05-01 03:21:25
谢谢!非常有用
2021-05-11 03:21:25