2012-07-16 97 views
28

Tôi có chuỗi ngày ở định dạng này:Ngày chuỗi chuyển đổi sang unix timestamp trong JavaScript/jQuery

2009-07-15 00:00:00 - 2009-07-15 08:16:23 

bất cứ ai có thể giúp tôi để tinh chỉnh chuỗi ngày để unix timestamp vào một cái gì đó như thế này:

1247634000 - 1247663783 

Tôi đang sử dụng GMT-5 Múi giờ.

Kỹ thuật JavaScript hoặc jQuery sẽ tuyệt vời! Cảm ơn trước.

Trả lời

17
var input = "2009-07-15 00:00:00 - 2009-07-15 08:16:23"; 
input = input.split(" - ").map(function (date){ 
    return Date.parse(date+"-0500")/1000; 
}).join(" - "); 

Demo

Date.parse docs

Lưu ý: Điều này sẽ không hoạt động trên các trình duyệt cũ kể từ khi tôi đang sử dụng Array.map, nhưng tôi nghĩ rằng bạn dễ dàng nên có thể Shim nó.

+1

điều này không làm việc ngay cả hoặc demo của bạn trong Firefox 19.0.2 – Sergiu

59

Tôi khuyên bạn nên sử dụng Moment Ngày lib khi làm việc với ngày tháng js. Nó thực sự nhẹ và tuyệt vời.

var timeStamp = (moment('2009-07-15 00:00:00').unix())*1000 
+2

Thư viện này làm cho việc làm sạch cú pháp và logic đơn giản hơn. Có vẻ như giá trị này bao gồm việc này với tính năng node.js tập trung ngày/giờ. 6KB được giảm thiểu, đối với những người có liên quan đến việc bao gồm điều này ở phía trình duyệt. – ekillaby

+2

Thực sự. Sau rất nhiều khó khăn với những câu trả lời khác khi tôi thử 'moment.js', đó là một sự an tâm ngay lập tức. Chúc phúc cho người đã tạo ra 'moment.js' !!! – Nav

+1

Điều này làm việc với NodeJs cũng là một điểm cộng lớn. –

15

trong Javascript bạn có thể trực tiếp vượt qua chuỗi để xây dựng đối tượng Date, như

var date = new Date('2009-07-15 00:00:00'.split(' ').join('T'))

rằng sẽ cung cấp cho bạn hẹn hò với đối tượng và để có được dấu thời gian từ đó bạn có thể làm

date.getTime()/1000

chia cho 1000 vì getTime sẽ cho dấu thời gian tính bằng mili giây

Working Demo

LƯU Ý:

Firefox không có khả năng phân tích định dạng ngày tháng nhất định, vì vậy chúng tôi cần phải chuyển đổi nó sang định dạng thích hợp đầu tiên, cho rằng chúng ta chỉ cần thay thế khoảng trống giữa ngày và thời gian thành phần với 'T' mà sẽ làm cho nó một định dạng ISO 8601 hợp lệ và firefox sẽ có thể phân tích nó

tham khảo:

Date.parse in MDN

ISO 8601 Date Format

Same question asked here

+0

điều này không hoạt động ngay cả hoặc bản demo của bạn trong Firefox 19.0.2 – Sergiu

+0

ok, firefox bằng cách nào đó không thể phân tích cú pháp dateformat, nó hy vọng chỉ có một trong các định dạng http: // www .w3.org/TR/NOTE-datetime –

+1

kiểm tra liên kết demo được cập nhật sẽ hoạt động với firefox cũng như –

0

sử dụng phương pháp phân chia, bạn có thể thay đổi format datetime trong cho đến nay, rất đơn giản và dễ dàng của mình cho tất cả mọi người.

var str = "2017-05-09T00:00:00.000Z"; 
var res = str.split("-",2); 
var res = str.split("T",1); 
var temp=res; 
Các vấn đề liên quan