2012-02-10 64 views
40

Tôi có thể chuyển đổi ngày tháng thành mili giây không? Ví dụ: Tôi muốn chuyển đổi số này làchuyển đổi ngày tháng thành mili giây bằng javascript

2012-02-10T13:19:11+0000 

đến mili giây.

Vì tôi muốn so sánh ngày hiện tại từ ngày được tạo. Và ngày tạo là một ngày tháng.

+0

Bạn có ý nghĩa gì bởi "mili giây" chính xác? Mili giây liên quan đến điểm nào trong thời gian? Bạn có nghĩa là một dấu thời gian UNIX? –

+0

giống như trong yahoo api, ngày được hiển thị bằng mili giây '1328796537', nhưng trong fb api, ngày được hiển thị trong iso' 2012-02-10T13: 18: 45 + 0000' –

+0

có thể trùng lặp của [Trợ giúp phân tích cú pháp ISO 8601 ngày trong Javascript] (http://stackoverflow.com/questions/4829569/help-parsing-iso-8601-date-in-javascript) – mplungjan

Trả lời

65

Hãy thử điều này

var date = new Date("11/21/1987 16:00:00"); // some mock date 
var milliseconds = date.getTime(); 
// This will return you the number of milliseconds 
// elapsed from January 1, 1970 
// if your date is less than that date, the value will be negative 

EDIT

Bạn đã cung cấp một ngày theo tiêu chuẩn ISO. Nó cũng được chấp nhận bởi các nhà xây dựng của Date đối tượng

var myDate = new Date("2012-02-10T13:19:11+0000"); 
var result = myDate.getTime(); 

Sửa

Điều tốt nhất tôi đã tìm thấy là để thoát khỏi sự bù đắp bằng tay.

var myDate = new Date("2012-02-10T13:19:11+0000"); 
var offset = myDate.getTimezoneOffset() * 60 * 1000; 

var withOffset = myDate.getTime(); 
var withoutOffset = withOffset - offset; 
alert(withOffset); 
alert(withoutOffset); 

Dường như hoạt động. Theo như các vấn đề với việc chuyển đổi chuỗi ISO thành đối tượng Date, bạn có thể tham khảo các liên kết được cung cấp.

EDIT

Sửa lỗi với chuyển đổi không chính xác để mili giây theo bình luận của Prasad19sara.

+0

Không hoạt động với timezoneoffset http://jsfiddle.net/mplungjan/r7xDk/ – mplungjan

+0

Có, Ngày sẽ không phân tích cú pháp trên tất cả các trình duyệt. [Xem câu trả lời của tôi về câu hỏi liên quan.] (Http://stackoverflow.com/questions/5802461/javascript-which-browsers-support-parsing-of-iso-8601-date-string-with-date-par/5803041# 5803041) –

+0

Và xem bình luận của tôi về câu trả lời của bạn;) – mplungjan

19

Một tốc ký trong những giải pháp trước là

var myDate = +new Date("2012-02-10T13:19:11+0000"); 

Nó làm một về việc chuyển đổi loại hình bay và trực tiếp kết quả đầu ra ngày ở định dạng phần nghìn giây.

Một cách khác cũng đang sử dụng phương pháp phân tích cú pháp của Date util chỉ xuất ra thời gian EPOCH tính bằng mili giây.

var myDate = Date.parse("2012-02-10T13:19:11+0000"); 
+0

Bạn có một lỗi nhỏ ở đó, '+' –

+0

@ stuart-siegler Đó thực sự không có lỗi đánh máy, dấu '+' trả về ngày bằng mili giây. – LordTribual

+0

@LordTribual "+ new" trả về ngày bằng mili giây? –

1

Một tùy chọn khác vào năm 2017 là sử dụng Date.parse(). Tuy nhiên, số documentation của MDN chỉ ra rằng nó không đáng tin cậy trước ES5.

var date = new Date(); // today's date and time in ISO format 
var myDate = Date.parse(date); 

Xem fiddle để biết thêm chi tiết.

1

Một giải pháp khả thi khác là so sánh ngày hiện tại với January 1, 1970, bạn có thể nhận được January 1, 1970 bởi new Date(0);

var date = new Date(); 
var myDate= date - new Date(0); 
Các vấn đề liên quan