2012-05-15 44 views
17

Tôi có một chuỗi có 8 chữ số đại diện cho một ngày. Ví dụ:Chuyển đổi chuỗi trả lại (YYYYMMDD) thành Ngày

20120515 

Tôi muốn so sánh nó với ngày hôm nay, được tạo ra theo cách này:

var currentDate = new Date(); 

Làm thế nào tôi có thể chuyển đổi các "chuỗi ngày 8 chữ số" để định dạng ngày phù hợp trong để so sánh nó với currentDate?

+1

Ngôn ngữ lập trình nào? – Julian

+0

Rõ ràng đây là câu hỏi đầu tiên của bạn nhưng bạn đang sử dụng ngôn ngữ lập trình nào? – Kaf

+0

Ồ, xin lỗi. JavaScript. – kirbyjwilson

Trả lời

27

Sử dụng phương thức chuỗi con và chuỗi con ra 4 phần tử và gán nó cho ngày mới của bạn trong năm. Sau đó, xâu chuỗi hai phần tử tại một thời điểm và lưu trữ tháng và ngày tương ứng.

var dateString = "20120515"; 
var year  = dateString.substring(0,4); 
var month  = dateString.substring(4,6); 
var day   = dateString.substring(6,8); 

var date  = new Date(year, month-1, day); 
var currentDate = new Date(); 

Bây giờ bạn có thể so sánh hai ngày với các toán tử thông thường.

+0

Vâng, điều đó có ý nghĩa. Cảm ơn! – kirbyjwilson

+0

@kirbyjwilson Hãy nhớ đánh dấu câu trả lời này là chính xác nếu nó giải quyết được vấn đề của bạn. – jurgemaister

+1

Tôi nghĩ bạn cần thêm một tham số thứ hai vào ['.substring()'] (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/substring) - nó trích xuất từ chỉ số đầu tiên lên đến _but không bao gồm_ chỉ mục thứ hai, do đó, '.substring (0,3)' chỉ lấy ba ký tự đầu tiên ... – nnnnnn

13

Nếu bạn muốn có một thư viện ngày nhỏ, bạn có thể sử dụng moment.js.

var a = moment("20120515", "YYYYMMDD"); 
// then use any of moment's manipulation or display functionality 
a.format("MMM Do YYYY"); // May 15th 2012 
a.fromNow(); // 14 hours ago 
a.calendar(); // Today at 12:00 AM 
+1

thiên tài! cho người đọc trong tương lai, nó có thể bị xâu chuỗi: 'moment(). format()' –

+0

Moment.js này là gì? –

+0

@saidesh, hãy xem http://momentjs.com/ – timrwood

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