← All posts

Start of 2026 Unix Timestamp: 1767225600 (UTC)

Unix timestamp 1767225600 is the exact UTC boundary where 2026 begins: 2026-01-01 00:00:00 UTC. Use it as the inclusive lower bound for 2026 UTC ranges, convert it to 1767225600000 milliseconds for JavaScript Date, and calculate local-year boundaries separately when reports use a business timezone.

Quick answer

1767225600 is the Unix timestamp for:

2026-01-01T00:00:00.000Z

Use it when you mean the UTC start of calendar year 2026.

Meaning Value
Unix seconds 1767225600
Unix milliseconds 1767225600000
ISO 8601 UTC 2026-01-01T00:00:00.000Z
Inclusive lower bound for 2026 >= 1767225600
Exclusive upper bound for 2026 < 1798761600
Last whole second before 2026 1767225599

For a full-year 2026 UTC query, use:

WHERE event_time >= 1767225600
  AND event_time <  1798761600

That includes every instant in 2026 and excludes 2027-01-01T00:00:00Z.

What 1767225600 means

Unix time counts forward from 1970-01-01 00:00:00 UTC. The value 1767225600 is the exact instant when UTC crosses from 2025 into 2026.

That sounds simple, but this number is usually copied into places where the details matter:

  • analytics filters for "all of 2026"
  • billing or subscription start dates
  • log searches around New Year's Eve
  • database migrations with hard-coded boundaries
  • automated tests that need a stable year-start fixture
  • API payloads that use Unix seconds instead of ISO strings

The safest wording is:

1767225600 is the inclusive UTC lower bound for 2026.

It is not automatically the local start of 2026 for every user, office, or reporting timezone.

Seconds, milliseconds, microseconds, and nanoseconds

The public Unix timestamp is usually shown in seconds. Some systems need a different unit.

Unit Start of 2026 value Typical use
Seconds 1767225600 Unix tools, many APIs, JWT-style claims, SQL epoch values
Milliseconds 1767225600000 JavaScript Date, Java epoch millis, .NET Unix milliseconds
Microseconds 1767225600000000 some database exports and event pipelines
Nanoseconds 1767225600000000000 tracing systems and high-resolution telemetry

Make the unit visible in field names:

year_start_seconds
year_start_ms
event_time_us
trace_time_ns

Avoid a bare field named timestamp when a codebase mixes seconds and milliseconds.

SQL ranges: use 1767225600 as the lower bound

For all UTC events in 2026, use a half-open range: start inclusive, end exclusive.

Epoch seconds column

SELECT *
FROM events
WHERE event_ts_seconds >= 1767225600
  AND event_ts_seconds <  1798761600;

Epoch milliseconds column

SELECT *
FROM events
WHERE event_ts_ms >= 1767225600000
  AND event_ts_ms <  1798761600000;

PostgreSQL timestamp column

SELECT *
FROM events
WHERE event_time >= TIMESTAMPTZ '2026-01-01 00:00:00+00'
  AND event_time <  TIMESTAMPTZ '2027-01-01 00:00:00+00';

Do not mix units:

-- Wrong: comparing a millisecond column to a seconds boundary
WHERE event_ts_ms >= 1767225600

That bug usually makes the filter include the wrong decade of data.

JavaScript, Python, shell, and SQL checks

Use a runtime check before pasting a year boundary into production code.

JavaScript

Date.UTC() returns milliseconds, so divide by 1000 for Unix seconds:

const start2026Seconds = Date.UTC(2026, 0, 1) / 1000;
const start2026Ms = Date.UTC(2026, 0, 1);

console.log(start2026Seconds);
// 1767225600

console.log(new Date(start2026Ms).toISOString());
// 2026-01-01T00:00:00.000Z

The month index is zero-based: 0 means January.

Python

Use an aware UTC datetime:

from datetime import datetime, timezone

start_2026 = datetime(2026, 1, 1, tzinfo=timezone.utc)

print(int(start_2026.timestamp()))
# 1767225600

Avoid naive datetimes when the boundary is meant to be UTC:

# Risky if the host machine is not set to UTC
datetime(2026, 1, 1).timestamp()

macOS / BSD shell

date -u -j -f '%Y-%m-%d %H:%M:%S' '2026-01-01 00:00:00' +%s
# 1767225600

date -u -r 1767225600 '+%Y-%m-%dT%H:%M:%SZ'
# 2026-01-01T00:00:00Z

Linux / GNU date

date -u -d '2026-01-01 00:00:00' +%s
# 1767225600

date -u -d @1767225600 '+%Y-%m-%dT%H:%M:%SZ'
# 2026-01-01T00:00:00Z

SQLite

SELECT datetime(1767225600, 'unixepoch');
-- 2026-01-01 00:00:00

UTC boundary vs local start of 2026

1767225600 is midnight in UTC. The same instant appears as a different wall-clock time elsewhere.

Timezone display Local time at Unix 1767225600
UTC 2026-01-01 00:00:00
America/New_York 2025-12-31 19:00:00
America/Los_Angeles 2025-12-31 16:00:00
Europe/London 2026-01-01 00:00:00
Asia/Shanghai 2026-01-01 08:00:00
Asia/Tokyo 2026-01-01 09:00:00

That table answers "what does 1767225600 look like locally?"

A different question is: "what is the Unix timestamp for local midnight at the start of 2026?" Those values are different:

Reporting timezone Local boundary UTC instant Unix seconds
UTC 2026-01-01 00:00:00 2026-01-01 00:00:00Z 1767225600
America/New_York 2026-01-01 00:00:00 2026-01-01 05:00:00Z 1767243600
America/Los_Angeles 2026-01-01 00:00:00 2026-01-01 08:00:00Z 1767254400
Europe/London 2026-01-01 00:00:00 2026-01-01 00:00:00Z 1767225600
Asia/Shanghai 2026-01-01 00:00:00 2025-12-31 16:00:00Z 1767196800
Asia/Tokyo 2026-01-01 00:00:00 2025-12-31 15:00:00Z 1767193200

If your dashboard says "2026 revenue in New York time", the lower bound is 1767243600, not 1767225600.

Use an IANA timezone name such as America/New_York, not a hard-coded offset. Offsets change with daylight-saving rules and political timezone changes.

Computing year-start timestamps safely

Do not compute year starts by adding 365 * 86400 to the previous boundary. Leap years eventually break that shortcut.

Use a date library:

function utcYearStartSeconds(year) {
  return Date.UTC(year, 0, 1) / 1000;
}

console.log(utcYearStartSeconds(2026));
// 1767225600

Python:

def utc_year_start_seconds(year: int) -> int:
    return int(datetime(year, 1, 1, tzinfo=timezone.utc).timestamp())

Useful nearby UTC boundaries:

Boundary Unix seconds UTC time
Start of 2025 1735689600 2025-01-01 00:00:00 UTC
Start of 2026 1767225600 2026-01-01 00:00:00 UTC
End of 2026 / start of 2027 1798761600 2027-01-01 00:00:00 UTC
Last whole second of 2026 1798761599 2026-12-31 23:59:59 UTC

2026 is not a leap year:

1798761600 - 1767225600 = 31536000
31536000 = 365 * 86400

Common mistakes with 1767225600

Treating seconds as milliseconds

JavaScript Date expects milliseconds:

new Date(1767225600).toISOString();
// 1970-01-21T10:53:45.600Z  <-- wrong unit

new Date(1767225600 * 1000).toISOString();
// 2026-01-01T00:00:00.000Z

Using UTC when the report is local

UTC year boundaries are correct for logs, APIs, and global event tables. Local business reports may need a local-year boundary first. Compute local midnight in the report timezone, then convert to UTC.

Writing inclusive end-of-year filters

This is fragile for fractional seconds:

WHERE event_time BETWEEN 1767225600 AND 1798761599

This is safer:

WHERE event_time >= 1767225600
  AND event_time <  1798761600

Hiding the unit in variable names

Prefer:

start_of_2026_seconds
startOf2026Ms

Avoid:

timestamp
start

Copy-paste checklist

Before shipping 1767225600, check:

  1. The boundary is meant to be UTC, not a local business timezone.
  2. The receiving system expects seconds, not milliseconds.
  3. A 13-digit version is used for JavaScript Date and millisecond columns.
  4. The 2026 range uses < 1798761600 as the upper bound.
  5. Test data includes one row before 1767225600, one exactly at it, and one exactly at 1798761600.
  6. Human-facing docs include the ISO string 2026-01-01T00:00:00Z beside the raw number.

Official references

Related timestamp guides

FAQ

What is the Unix timestamp for the start of 2026?
The start of 2026 in UTC is Unix timestamp 1767225600 seconds, or 1767225600000 milliseconds. It represents 2026-01-01 00:00:00 UTC.
What date is 1767225600?
1767225600 converts to 2026-01-01T00:00:00.000Z. It is midnight at the start of January 1, 2026 in UTC.
Is 1767225600 local midnight everywhere?
No. It is midnight in UTC only. At that same instant it is 2025-12-31 19:00 in New York, 2025-12-31 16:00 in Los Angeles, 2026-01-01 08:00 in Shanghai, and 2026-01-01 09:00 in Tokyo.
What is the millisecond timestamp for the start of 2026?
The millisecond form is 1767225600000. Use that value for JavaScript Date, Java Instant.ofEpochMilli, and database columns that explicitly store epoch milliseconds.
How do I use 1767225600 in a SQL range for 2026?
Use a half-open range: WHERE event_time >= 1767225600 AND event_time < 1798761600 for epoch seconds. For millisecond columns, use >= 1767225600000 and < 1798761600000.
What is the end timestamp for 2026?
The exclusive end of 2026 is 1798761600, which is also the start of 2027 in UTC. The last whole second inside 2026 is 1798761599, but range queries should usually use the exclusive 1798761600 boundary.
How do I calculate the start of 2026 in JavaScript?
Use Date.UTC(2026, 0, 1) / 1000 for seconds, or Date.UTC(2026, 0, 1) for milliseconds. The month index is zero-based, so 0 means January.
How do I calculate the start of 2026 in Python?
Use an aware UTC datetime: int(datetime(2026, 1, 1, tzinfo=timezone.utc).timestamp()). Avoid naive datetimes when the boundary must be UTC.
What if my report uses a local timezone?
Compute local midnight in the report timezone first, then convert that instant to UTC. For example, 2026-01-01 00:00 in America/New_York is Unix timestamp 1767243600, not 1767225600.