Câu trả lời:
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 lấy thời gian UTC từ những người đó, bạn có thể sử dụng UTC().
setUTCHoursthay vì setHoursđể có được Thời gian toàn cầu
setHourslà nguy hiểm vì nó đặt giờ địa phương, thay vì giờ UTC.
Sử dụng thư viện Momentjs , điều này có thể đạt được bằng startOf()và endOf()các phương thức trên đối tượng ngày hiện tại của thời điểm, chuyển chuỗi 'day'dưới dạng đối số:
GMT địa phương:
var start = moment().startOf('day'); // set to 12:00 am today
var end = moment().endOf('day'); // set to 23:59 pm today
var start = moment.utc().startOf('day');
var end = moment.utc().endOf('day');
.toDate()cuối cùng để có được ngày. var end = moment().endOf('day').toDate();
.unix()vào cuối để có dấu thời gian unix trong vài giây :) như thế này:moment().startOf('day').unix()
moment(new Date()).endOf("day");không hoạt động, nhưng moment().endOf("day");không hoạt động.
moment-timezonevà làm điều này : moment().tz('America/Chicago').startOf('day').toDate().
Sử dụng thư viện luxon.js , có thể đạt được điều tương tự bằng cách sử dụng các phương thức startOf và endOf bằng cách chuyển 'ngày' làm 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
xóa .toUTC () nếu bạn chỉ cần giờ địa phương
và bạn có thể hỏi tại sao không phải khoảnh khắc.js , câu trả lời là ở đây cho điều đó.
Trong MomentJs Chúng ta có thể khai báo nó như sau:
const start = moment().format('YYYY-MM-DD 00:00:01');
const end = moment().format('YYYY-MM-DD 23:59:59');
Nếu bạn chỉ quan tâm đến dấu thời gian trong GMT, bạn cũng có thể thực hiện việc này, có thể được điều chỉnh thuận tiện cho các 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
FYI (phiên bản hợp nhất của Tvanfosson)
nó sẽ trả về ngày thực tế => ngày khi bạn đang gọi chức năng
export const today = {
iso: {
start: () => new Date(new Date().setHours(0, 0, 0, 0)).toISOString(),
now: () => new Date().toISOString(),
end: () => new Date(new Date().setHours(23, 59, 59, 999)).toISOString()
},
local: {
start: () => new Date(new Date(new Date().setHours(0, 0, 0, 0)).toString().split('GMT')[0] + ' UTC').toISOString(),
now: () => new Date(new Date().toString().split('GMT')[0] + ' UTC').toISOString(),
end: () => new Date(new Date(new Date().setHours(23, 59, 59, 999)).toString().split('GMT')[0] + ' UTC').toISOString()
}
}
// cách sử dụng
today.local.now(); //"2018-09-07T01:48:48.000Z" BAKU +04:00
today.iso.now(); // "2018-09-06T21:49:00.304Z" *
* nó có thể áp dụng cho loại thời gian tức thì trên Java8, tự động chuyển đổi giờ địa phương của bạn tùy thuộc vào khu vực của bạn. (nếu bạn đang lập kế hoạch viết ứng dụng toàn cầu)
Tôi thích sử dụng thư viện date-fns để thao tác 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ể bắt đầu và kết thúc một 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>
var end = new Date(start.getTime());đảm bảo rằng bạn có cùng thời điểm - trong trường hợp bạn thay đổi ngày giữa khởi đầu và kết thúc - điều đó có thể xảy ra - chỉ là một thói quen tốt để tham gia