2011-12-26 51 views

Trả lời

252
var start = new Date(); 
start.setHours(0,0,0,0); 

var end = new Date(); 
end.setHours(23,59,59,999); 

alert(start.toUTCString() + ':' + end.toUTCString()); 

Nếu bạn cần phải nhận được thời gian tính theo giờ UTC từ đó, bạn có thể sử dụng UTC().

+9

Tôi khuyên bạn nên 'var end = new Date (start.getTime());' để đảm bảo rằng bạn có cùng một điểm trong thời gian - trong trường hợp bạn thay đổi ngày giữa bắt đầu và kết thúc initialisation - nó có thể xảy ra - chỉ là một thói quen tốt để nhận được vào –

+0

@MartynDavis khi tất cả hoạt động bình thường, thường khoảng 0-2 ve xảy ra ở giữa nhưng nó phụ thuộc vào cách bận rộn CPU là như vậy thì nó có ý nghĩa để làm điều đó nếu bạn đang lo lắng về 1 đánh dấu chính xác. –

+0

Tôi cũng khuyên bạn nên sử dụng 'setUTCHours' thay vì' setHours' để nhận thời gian Universal – sidonaldson

-8
function getTime(zone, success) { 

    var url = 'http://json-time.appspot.com/time.json?tz=' + zone, 
     ud = 'json' + (+new Date()); 
    window[ud]= function(o){ 
     success && success(new Date(o.datetime)); 
    }; 
    document.getElementsByTagName('head')[0].appendChild((function(){ 
     var s = document.createElement('script'); 
     s.type = 'text/javascript'; 
     s.src = url + '&callback=' + ud; 
     return s; 
    })()); 
} 

getTime('GMT', function(time){ 

    // This is where you do whatever you want with the time: 
    alert(time); 
}); 

tham khảo: Getting the current GMT world time

134

Sử dụng thư viện momentjs, điều này có thể đạt được với các startOf()endOf() phương pháp trên đối tượng ngày hiện tại của khoảnh khắc, đi qua các chuỗi 'day' như các đối số:

Local giờ:

var start = moment().startOf('day'); // set to 12:00 am today 
var end = moment().endOf('day'); // set to 23:59 pm today 

For UTC:

var start = moment.utc().startOf('day'); 
var end = moment.utc().endOf('day'); 
+16

momentjs là điểm duy nhất cho tất cả mọi thứ liên quan đến xử lý thời gian JavaScript. Luôn luôn đáng để nhập. –

+4

Và chúng ta nên sử dụng '.toDate()' để có được ngày tháng. 'var end = moment(). EndOf ('day'). ToDate();' – YaTaras

+4

thêm '.unix()' vào cuối để lấy dấu thời gian unix trong giây :) như sau: 'moment(). StartOf ('ngày'). unix() ' –

2

Sử dụng thư viện luxon.js, cùng có thể đạt được bằng startOf và endOf phương pháp bằng cách thông qua các 'ngày' như tham số

var DateTime = luxon.DateTime; 
DateTime.local().startOf('day').toUTC().toISO(); //2017-11-16T18:30:00.000Z 
DateTime.local().endOf('day').toUTC().toISO(); //2017-11-17T18:29:59.999Z 
DateTime.fromISO(new Date().toISOString()).startOf('day').toUTC().toISO(); //2017-11-16T18:30:00.000Z 

loại bỏ .toUTC() nếu bạn chỉ cần thời gian địa phương

và bạn có thể hỏi tại sao không phải moment.js, câu trả lời là here cho điều đó.

+0

Bạn có nghĩa là http://moment.github.io/luxon/docs/manual/why.html? –

+0

@ ed-norris tx đã cập nhật liên kết – tk120404

0

Tôi thích sử dụng thư viện date-fns để điều chỉnh ngày. Nó thực sự là công cụ mô-đun và nhất quán tuyệt vời. Bạn có thể nhận được bắt đầu và kết thúc của ngày theo cách này:

var startOfDay = dateFns.startOfDay; 
 
var endOfDay = dateFns.endOfDay; 
 

 
console.log('start of day ==> ', startOfDay(new Date('2015-11-11'))); 
 
console.log('end of day ==> ', endOfDay(new Date('2015-11-11')));
<script src="https://cdnjs.cloudflare.com/ajax/libs/date-fns/1.29.0/date_fns.min.js"></script>

1

Nếu bạn chỉ quan tâm đến timestamps bạn cũng có thể làm được điều này, có thể được điều chỉnh thuận tiện cho những khoảng thời gian khác nhau (giờ: 1000 * 60 * 60, 12 giờ: 1000 * 60 * 60 * 12, v.v.)

const interval = 1000 * 60 * 60 * 24; // 24 hours in milliseconds 

let startOfDay = Math.floor(Date.now()/interval) * interval; 
let endOfDay = startOfDay + interval - 1; // 23:59:59:9999 
Các vấn đề liên quan