2011-07-15 43 views
7

Làm cách nào để chuyển đổi thời gian ở định dạng "YYYY-MM-DD hh: mm: ss" (ví dụ: "2011-07-15 13:18:52") thành dấu thời gian UNIX?Cách chuyển đổi ngày theo định dạng "YYYY-MM-DD hh: mm: ss" sang dấu thời gian UNIX

tôi đã cố gắng đoạn mã này javascript:

date = new Date("2011-07-15").getTime()/1000 
alert(date) 

Và nó hoạt động, nhưng nó kết quả trong NaN khi tôi thêm thời gian ('2011/07/15 13:18:52') vào đầu vào.

Trả lời

16
var match = '2011-07-15 13:18:52'.match(/^(\d+)-(\d+)-(\d+) (\d+)\:(\d+)\:(\d+)$/) 
var date = new Date(match[1], match[2] - 1, match[3], match[4], match[5], match[6]) 
// big gotcha -------------------------^^^ 
// month must be between 0 and 11, not 1 and 12 
console.log(date); 
console.log(date.getTime()/1000); 
+0

dude am nhận được dấu thời gian nhưng nó không phải là một trong những chính xác nhận được. khi tôi đưa ra '2011-07-15 14:54:12' Tôi nhận được dấu thời gian là '1313434452'. Nhưng khi tôi kiểm tra điều này bằng cách sử dụng 'http://www.onlineconversion.com/unix_time.htm' của nó cho thấy dấu thời gian chuyển đổi ngày Mon, 15 Aug 2011 07:48:52 GMT đó là sai. –

+1

Rất tiếc. Tôi đã cập nhật câu trả lời của mình (xem hình ảnh xác thực). –

+0

Cảm ơn dude .. :-) –

-3

này trả về số mili giây kể từ ngày 1 tháng 1 năm 1970: Date.parse('2011-07-15 10:05:20')

Chỉ cần chia cho 1000 để có được giây thay vì mili giây ..

+0

date = new Date.parse ('2011-07-15 10:05:20')/100 là điều bạn muốn ... Tôi gặp lỗi NaN –

+0

'console.log (Date.parse ('2011 -07-15 10:05:20 ')); 'là' NaN', [đây không phải là định dạng nhập được công nhận] (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date/parse). –

+0

Phải thay đổi từ trình duyệt đến trình duyệt, sau đó. Thử nghiệm nó trong Chrome, không có vấn đề (http://jsfiddle.net/nslr/v2xQ6/) –

1

tháng bắt đầu từ 0, không giống như những ngày! Vì vậy, đây sẽ làm việc một cách hoàn hảo (tested)

function dateToUnix(year, month, day, hour, minute, second) { 
    return ((new Date(Date.UTC(year, month - 1, day, hour, minute, second))).getTime()/1000.0); 
} 
+0

Cảm ơn rất nhiều :-) –

6

Bạn đã chấp nhận một câu trả lời, nhưng một biểu thức chính quy đơn giản hơn nhiều có thể được sử dụng:

function stringToDate(s) { 
    s = s.split(/[-: ]/); 
    return new Date(s[0], s[1]-1, s[2], s[3], s[4], s[5]); 
} 

alert(stringToDate('2011-7-15 20:46:3')); 

Tất nhiên chuỗi đầu vào phải được định dạng đúng.

12

mã sau đây sẽ làm việc cho định dạng YYYY-MM-DD hh:mm:ss:

function parse(dateAsString) { 
    return new Date(dateAsString.replace(/-/g, '/')) 
} 

Mã này chuyển đổi YYYY-MM-DD hh:mm:ss-YYYY/MM/DD hh:mm:ss rằng có thể dễ dàng phân tách bởi Date constructor.

+0

Câu trả lời này là cách tiếp cận tốt nhất. Cảm ơn! –

Các vấn đề liên quan