Javascript转换日期时间字符串到Epoch

cbm*_*m64 21 javascript datetime epoch

所以我放弃了...一直试图这样做;

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

我需要将其转换为大纪元日期,以便我可以对其进行一些计算.我无法修改日期时间发送给我的格式.

JavaScript或jQuery很好.

Cra*_*ent 30

var someDate = new Date(dateString);
someDate = someDate.getTime();
Run Code Online (Sandbox Code Playgroud)


mel*_*lvs 22

您可以使用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
Run Code Online (Sandbox Code Playgroud)

  • 我不知道为什么没有人投票,但它就像一个魅力...... (5认同)

Ber*_*rgi 21

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]);
Run Code Online (Sandbox Code Playgroud)

这将为1354604400000 ms您的示例日期提供结果.

  • 他从月份字段中减去1的原因是月份基于0指数.这意味着1月是"0".不是1. 12月是11.不是12.很奇怪但是真的. (6认同)
  • 这太复杂了。`Math.floor(new Date('12/04/2012 07:00') / 1000)` 工作得很好。您可能需要进行一些字符串操作来翻转月份和日期值,但这不是问题,而且它仍然比您在这里得到的代码更简单。 (2认同)

cho*_*ovy 14

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

var epoch = moment(str).unix();
Run Code Online (Sandbox Code Playgroud)

http://momentjs.com/


yus*_*san 9

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

new Date(<datetime string>').getTime()
Run Code Online (Sandbox Code Playgroud)

例如 :

let epoch = new Date('2016-10-11').getTime()
Run Code Online (Sandbox Code Playgroud)

  • 似乎缺少依赖项定义 - `致命错误:Date(...).getTime is not a function` (2认同)

小智 9

Number(new Date('04/12/2012 07:00'))
Run Code Online (Sandbox Code Playgroud)