2013-05-29 37 views
12

Có cách nào để chuỗi chức năng ngày javascript?Làm thế nào để chuỗi chức năng ngày javascript

ví dụ, tôi muốn một cái gì đó như thế này:

var d = new Date().setMinutes(0).setSeconds(0).setMilliseconds(0); 

cú pháp này phá vỡ với lỗi:

(new Date).setMinutes(0).setSeconds is not a function 

Tôi biết tôi có thể làm điều này:

var d = new Date(); 
d.setMinutes(0); 
d.setSeconds(0); 
d.setMilliseconds(0); 

nhưng điều này cảm thấy dài dòng và rườm rà. Có cách nào tốt hơn?

+1

Có. http://momentjs.com/ – SLaks

+0

Rất tốt. Cảm ơn bạn. Tôi đã thấy JodaTime cho Java, và cho rằng có một thư viện tương đương trong Javascript. – MyTimeFinder

Trả lời

7

Bạn có thể đặt giây và msecs với setMinutes phương pháp:

var d = new Date(); 
d.setMinutes(0,0,0); 

Cũng làm việc với hours- d.setHours(0,0,0,0);

+1

Tôi đoán câu trả lời là "không" bạn không thể chuỗi, nhưng tôi không biết rằng setHours (và dường như setFullYear) có thể lấy nhiều tham số. Đó là một công việc hợp lý xung quanh cho những gì tôi cần. – MyTimeFinder

3

Bạn có thể chuyển tham số đến Date constructor. Ví dụ.

var d = new Date(null, null, null, null, 0, 0, 0); 
+0

@kennebec Bạn muốn ngày thực tế là gì? –

+1

Đây sẽ là câu trả lời hay nhất nếu bỏ qua 'null' mặc định cho năm, tháng, ngày hiện tại. Tuy nhiên, nó xuất hiện này sẽ cung cấp cho tôi 31 tháng 12 năm 1899. Thông thường tôi đang cố gắng để thao tác ngày tháng liên quan đến ngày người dùng tương tác với trang web của tôi. Tôi không biết ngày nào nó sẽ như thế, nhưng tôi muốn buổi trưa vào ngày đó hoặc 5 ngày vào buổi trưa từ ngày đó. d.setHours (16,0,0,0) để thiết lập một cái gì đó cho ngày hôm đó lúc 4:00 pm là kịch bản phổ biến nhất của tôi. – MyTimeFinder

0

Câu hỏi này là khá cũ, nhưng bạn có thể kết hợp câu trả lời Kennebec với Yuriy để làm cho nó thành một dòng nếu muốn:

var d = new Date(new Date().setMinutes(0,0,0)) 
Các vấn đề liên quan