A Comprehensive Guide to Getting Start and End of Day Timestamps in UTC with JavaScript

Nov 20, 2025 · Programming · 13 views · 7.8

Keywords: JavaScript | UTC Time | Timestamp | Date Object | setUTCHours

Abstract: This article provides an in-depth exploration of multiple methods to obtain the start (00:00:00) and end (23:59:59) timestamps of the current day in UTC time using JavaScript. It thoroughly analyzes the implementation principles of the native Date object's setUTCHours method, compares alternative solutions using dayjs and moment.js libraries, and demonstrates best practices through practical code examples. Key technical aspects such as timezone handling and time precision control are covered, offering developers comprehensive solutions.

Introduction

In modern web development, handling dates and times is a common requirement, especially in globalized applications that need to operate across time zones. Obtaining the start and end timestamps of a specific day is crucial for scenarios such as data statistics, log recording, and scheduled tasks. Based on highly-rated Stack Overflow answers and authoritative technical documentation, this article systematically explains the implementation methods for getting the start and end timestamps of the current day in UTC time using JavaScript.

Native JavaScript Implementation

Using JavaScript's built-in Date object is the most straightforward approach, requiring no dependencies on third-party libraries. The core method involves using setUTCHours() to set the hour, minute, second, and millisecond in UTC time.

Code for obtaining the start of the day (00:00:00):

var start = new Date();
start.setUTCHours(0, 0, 0, 0);
console.log(start.toUTCString());

Code for obtaining the end of the day (23:59:59.999):

var end = new Date();
end.setUTCHours(23, 59, 59, 999);
console.log(end.toUTCString());

In-depth Method Analysis

The setUTCHours() method accepts four parameters: hour (0-23), minute (0-59), second (0-59), and millisecond (0-999). By setting these parameters to specific values, you can precisely control the time portion of the date object.

It is important to note that the end time is set to 23:59:59.999 instead of 23:59:59.000. This is because, in terms of time precision, including 999 milliseconds ensures coverage of the last millisecond of the day, avoiding incomplete time ranges due to precision issues.

Alternative Parameter Settings

Besides directly setting 23:59:59.999, another parameter combination can achieve the same effect:

var end = new Date();
end.setUTCHours(24, 0, 0, -1);
console.log(end.toUTCString());

The principle behind this method is that 24 hours is equivalent to 00:00:00 of the next day, and subtracting 1 millisecond brings it back to 23:59:59.999 of the current day. Although logically equivalent, the first method offers better code readability.

Third-party Library Solutions

For complex date handling needs, using specialized date libraries can provide more concise APIs and a better development experience.

day.js Library Implementation

day.js is a lightweight modern JavaScript date library that offers an intuitive chainable API:

const start = dayjs().startOf('day');
const end = dayjs().endOf('day');

For UTC time handling, the UTC plugin must be enabled first:

const utc = require('dayjs/plugin/utc');
dayjs.extend(utc);

const start = dayjs.utc().startOf('day');
const end = dayjs.utc().endOf('day');

moment.js Library Implementation

moment.js is a historically widely-used date library. Although it is no longer recommended for new projects, it remains common in existing systems:

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

UTC version:

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

Timestamp Acquisition and Conversion

In practical applications, it is often necessary to convert date objects into timestamp format. The getTime() method can be used:

var startTimestamp = start.getTime();
var endTimestamp = end.getTime();

Timestamps represent the number of milliseconds since January 1, 1970, 00:00:00 UTC, making them suitable for storage and transmission.

Timezone Handling Considerations

When handling date and time, timezone is a critical factor. The methods discussed in this article are all based on UTC time, avoiding the influence of local time zones. If operations in specific time zones are needed, it is recommended to use specialized timezone libraries or the browser's native Intl API.

Performance and Compatibility

The native Date object has good support in all modern browsers and offers optimal performance. Third-party libraries provide a better development experience but increase bundle size. When choosing a solution, weigh the specific project requirements and performance needs.

Practical Application Scenarios

These methods are particularly useful in the following scenarios:

Conclusion

Obtaining the start and end timestamps of the current day in UTC time is a fundamental yet important operation in JavaScript date handling. The setUTCHours() method of the native Date object provides a concise and efficient solution, while third-party libraries like day.js offer more user-friendly APIs. Developers should choose the appropriate method based on project requirements and pay attention to timezone and time precision handling to ensure the correctness of time-related functionalities.

Copyright Notice: All rights in this article are reserved by the operators of DevGex. Reasonable sharing and citation are welcome; any reproduction, excerpting, or re-publication without prior permission is prohibited.