2015-01-17 29 views
8

Tôi phải phân tích chuỗi ngày và giờ có định dạng "2015-01-16 22:15:00". Tôi muốn phân tích cú pháp này thành đối tượng ngày tháng JavaScript. Bất kỳ trợ giúp về điều này?Chuỗi phân tích 'Ngày & Giờ' trong Javascript có định dạng tùy chỉnh

Tôi đã thử một số plugin jquery, moment.js, date.js, xdate.js. Vẫn không có may mắn.

+2

Vui lòng đăng nỗ lực của bạn. Nếu không thì rất khó để giúp đỡ. – nha

+0

bản sao có thể có của [Tôi có thể tìm tài liệu về định dạng ngày trong JavaScript] (http://stackoverflow.com/questions/1056728/where-can-i-find-documentation-on-formatting-a-date-in- javascript) –

Trả lời

23

Với moment.js bạn có thể tạo một đối tượng thời điểm sử dụng String+Format constructor:

var momentDate = moment('2015-01-16 22:15:00', 'YYYY-MM-DD HH:mm:ss'); 

Sau đó, bạn có thể chuyển nó sang JavaScript Object ngày sử dụng toDate() method:

var jsDate = momentDate.toDate(); 
+0

Tôi đã thử sử dụng moment.js, nhưng đã xảy ra lỗi "Tham khảo thời gian lỗi: không được xác định". Tôi cũng đã thiết lập đường dẫn js trong html của mình. – yuva

+0

Đọc [cách sử dụng] (http://momentjs.com/docs/#/use-it/) trong tài liệu. –

+0

Như Matt Johnson nói, bạn phải làm theo [hướng dẫn] (http://momentjs.com/docs/#/use-it/browser/) để sử dụng moment.js trong ứng dụng trình duyệt của bạn. –

2
new Date("2015-01-16T22:15:00") 

Xem Date.parse().

Chuỗi phải ở định dạng ISO-8601. Nếu bạn muốn phân tích các định dạng khác, hãy sử dụng moment.js.

moment("2015-01-16 22:15:00").toDate(); 
+0

Điều này làm việc cho tôi. Những gì tôi đã làm là một chút cải thiện hack cho đề xuất bạn cung cấp, tôi đã đăng giải pháp đó trong nhận xét. Cảm ơn :) – yuva

1

tôi cố gắng sử dụng những người trong giây phút. Nhưng kể từ khi tôi đã có lỗi này, "ReferenceError: thời điểm không được xác định", tôi đã phải bỏ qua nó ngay bây giờ. Tôi hiện đang sử dụng giải pháp tạm thời.

function parseDate(dateString) { 
    var dateTime = dateString.split(" "); 
    var dateOnly = dateTime[0]; 
    var timeOnly = dateTime[1]; 

    var temp = dateOnly + "T" + timeOnly; 
    return new Date(temp); 
} 
6

Một giải pháp tốt hơn, bây giờ tôi sử dụng date.js - https://code.google.com/p/datejs/

tôi bao gồm các kịch bản trong trang html của tôi như thế này -

<script type="text/javascript" src="path/to/date.js"></script> 

Sau đó, tôi chỉ đơn giản là phân tích chuỗi ngày " 2015-01-16 22:15:00 "với chỉ định định dạng là,

var dateString = "2015-01-16 22:15:00"; 
var date = Date.parse(dateString, "yyyy-MM-dd HH:mm:ss"); 
+1

Điều này không thành công đối với tôi. Dường như hàm phân tích date.js này chỉ hoạt động trên một định dạng duy nhất. Đối số thứ hai được bỏ qua hoàn toàn. – Marc

1

Nếu bạn chắc chắn ở định dạng mong muốn và không cần kiểm tra lỗi, bạn có thể phân tích cú pháp theo cách thủ công bằng cách chia tách (và tùy ý thay thế). Tôi cần phải làm một cái gì đó tương tự trong dự án của tôi (MM/DD/YYYY HH: mm: ss: sss) và sửa đổi giải pháp của tôi để phù hợp với định dạng của bạn. Lưu ý số trừ của 1 trong tháng.

var str = "2015-01-16 22:15:00"; 
//Replace dashes and spaces with : and then split on : 
var strDate = str.replace(/-/g,":").replace(/ /g,":").split(":"); 
var aDate = new Date(strDate[0], strDate[1]-1, strDate[2], strDate[3], strDate[4], strDate[5]) ; 
Các vấn đề liên quan