2009-11-24 63 views
52

Tôi đang hiển thị ngày tháng và thời gian như thế nàyChuyển đổi Date and Time Để Unix Timestamp

24-Tháng mười một-2009 17:57:35

Tôi muốn chuyển nó sang một dấu thời gian unix để tôi có thể thao tác dễ dàng. Tôi cần phải sử dụng regex để phù hợp với từng phần của chuỗi sau đó làm việc ra dấu thời gian unix từ đó.

Tôi rất kinh khủng với regex nhưng tôi đã nghĩ ra điều này. Vui lòng đề xuất các cải tiến ^.^

/((\d){2}+)-((Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)+)-((\d){4}+) ((\d){2}+):((\d){2}+):((\d){2}+)/gi 

Tôi làm cách nào để thực hiện việc này?

+0

Toàn bộ mặt bình luận, nhưng mỗi khi nhìn thấy tên của bạn tôi nghĩ rằng "Ben Shalock Khóa Ben" (Tài liệu tham khảo: http://www.discogs.com/House-Of-Pain-Shamrocks-And-Shenanigans-Boom -Shalock-Lock-Boom/release/229941 :) –

+1

Anh trai sinh đôi độc ác của tôi, chúng tôi không nói về anh ta. –

+0

Trùng lặp: http://stackoverflow.com/questions/1457607/how-to-convert-a-gmt-timestamp-to-unix-timestamp-javascript và tại đây http://stackoverflow.com/questions/ 1416296/parsing-a-date-in-long-format-from-atom-feed –

Trả lời

85

Nếu bạn chỉ cần một hàm phân tích cú pháp ngày tốt, tôi sẽ xem date.js. Nó sẽ lấy bất kỳ chuỗi ngày nào bạn có thể ném vào nó và trả lại cho bạn một đối tượng Ngày JavaScript.

Khi bạn có đối tượng Date, bạn có thể gọi phương thức getTime() của nó, sẽ cung cấp cho bạn mili giây kể từ ngày 1 tháng 1 năm 1970. Chỉ cần chia kết quả đó cho 1000 để nhận giá trị dấu thời gian unix.

Trong mã, chỉ bao gồm date.js, sau đó:

var unixtime = Date.parse("24-Nov-2009 17:57:35").getTime()/1000 
+6

Bạn thậm chí không cần thư viện để phân tích cú pháp định dạng đó, phải không? – Dexter

+1

Cần lưu ý rằng không có date.js, Date.parse sẽ lấy một chuỗi và trả lại dấu thời gian unix. Nhưng nó rất nghiêm ngặt về định dạng. Trong ví dụ của OP, bạn cần phải string.replace ('-', '/'). Khác hơn thế, tôi khá chắc chắn nó sẽ làm việc trong tất cả các trình duyệt hiện đại. Tôi đồng ý rằng date.js đáng tin cậy hơn nhiều. – Marco

+4

dính vào regexp của bạn. Thư viện javascript được bản địa hóa quá mức cần thiết nếu bạn đang sử dụng định dạng ngày cố định. Nếu bạn có quyền kiểm soát định dạng này, bạn nên cân nhắc sử dụng thứ gì đó trung lập hơn và dễ phân tích hơn, như ISO8601. – peller

52

Có vẻ như getTime đang không hoạt động trên câu trả lời ở trên.

Date.parse(currentDate)/1000 
+0

Tôi vừa sao chép Date.parse ('19 -04-2015 18:31:00 ')/1000 trong bảng điều khiển trình duyệt và nó cung cấp cho NaN bạn có thể cung cấp giải pháp @chovy –

+2

Tôi đoán ngày của bạn là không đúng định dạng. Bạn cũng có thể sử dụng thời điểm (datestring) .unix() – chovy

+0

ngày ở định dạng dd: i: s dd-mm-yy. Tôi đang làm sai? –

2

Bạn có thể sử dụng chức năng Date.getTime(), hoặc Date đối tượng chính nó mà khi chia lợi nhuận thời gian trong mili giây.

var d = new Date(); 

d/1000 
> 1510329641.84 

d.getTime()/1000 
> 1510329641.84 
Các vấn đề liên quan