2012-01-11 102 views
9

API của YouTube trả về đối tượng JSON với một loạt video. Mỗi đối tượng video có ngày xuất bản được định dạng như "2012-01-11T20: 49: 59.415Z". Nếu tôi khởi tạo đối tượng Ngày Javascript bằng cách sử dụng mã bên dưới, đối tượng trả về "Ngày không hợp lệ".Phân tích cú pháp API của Youtube Ngày trong Javascript

var dt = new Date("2012-01-11T20:49:59.415Z"); 

Tôi đang sử dụng tính năng này trên iOS/mobile Safari, nếu điều đó tạo sự khác biệt.

Bất kỳ đề xuất hoặc ý tưởng nào về cách tạo đối tượng hợp lệ?

Trả lời

3

tôi đã kết thúc việc tìm kiếm một giải pháp tại http://zetafleet.com/blog/javascript-dateparse-for-iso-8601. Có vẻ như ngày ở định dạng được gọi là 'ISO 8601.' Trên các trình duyệt trước đó (Safari 4, Chrome 4, IE 6-8), ISO 8601 không được hỗ trợ, vì vậy Date.parse không hoạt động. Mã tham chiếu từ các bài viết trên blog liên kết mở rộng ngày lớp hiện tại để hỗ trợ ISO 8601.

0

Nếu bạn chỉ cần một phần của ngày (ví dụ: nếu bạn không quan tâm về thời gian hoặc múi giờ), bạn có thể chỉ cắt phần đó của chuỗi ngày.

+0

Tôi đang cố gắng tạo ngày tương đối, như "21 ngày trước" bằng cách kéo mili giây từ đối tượng Ngày. –

+0

Thật dễ dàng khi bạn hoàn tất việc hiển thị ngày qua tập lệnh ISO 8601. Tạo một ngày toàn cầu mới phân tích cú pháp thành đối tượng ngày ISO 8601 và sau đó trừ "ngày được đăng" từ "ngày hiện tại" ... –

4

Hãy thử sử dụng JavaScript Date.parse(string)Date constructor có số mili giây từ thời đại. Chức năng "phân tích cú pháp" phải chấp nhận ngày ISO8601 hợp lệ trên bất kỳ trình duyệt nào.

Ví dụ:

var d = new Date(Date.parse("2012-01-11T20:49:59.415Z")); 
d.toString(); // => Wed Jan 11 2012 15:49:59 GMT-0500 (EST) 
d.getTime(); // => 1326314999415 
+0

Điều này không hoạt động trong các trình duyệt cũ hơn. Tôi đang thử nghiệm trên iOS 4.2.1 và iOS 5.0.1. iOS 4 không hoạt động, trong khi iOS 5 hoạt động. –

3
var dt = "2012-01-11T20:49:59.415Z".replace("T"," ").replace(/\..+/g,"") 
dt = new Date(dt); 
Các vấn đề liên quan