Nếu bạn đang cung cấp dấu thời gian UTC và muốn giây kể từ ngày 1/1/1970, thì:
[...]
Chỉnh sửa
Đã xem lại câu trả lời ban đầu của tôi và không thích nó, câu trả lời sau sẽ tốt hơn:
// Given an ISO8601 UTC timestamp, or one formatted per the OP,
// return the time in seconds since 1970-01-01T00:00:00Z
function toSecondsSinceEpoch(s) {
s = s.split(/[-A-Z :\.]/i);
var d = new Date(Date.UTC(s[0], --s[1], s[2], s[3], s[4], s[5]));
return Math.round(d.getTime()/1000);
}
Lưu ý rằng chuỗi trong OP không tuân thủ ISO8601, nhưng ở trên sẽ hoạt động với nó. Nếu dấu thời gian nằm trong múi giờ địa phương, thì:
// Given an ISO8601 timestamp in the local timezone, or one formatted per the OP,
// return the time in seconds since 1970-01-01T00:00:00Z
function toSecondsSinceEpochLocal(s) {
s = s.split(/[-A-Z :\.]/i);
var d = new Date(s[0],--s[1],s[2],s[3],s[4],s[5]);
return Math.round(d.getTime()/1000);
}
Nếu giây thập phân cần được đáp ứng, cần thêm một chút nỗ lực để chuyển phần thập phân thành mili giây.