utc now / zones / saint petersburg

Saint Petersburg time zone — UTC+03:00 right now (MSK)

Saint Petersburg, Russia, is currently on MSK (UTC+03:00) — 3 hours ahead of UTC. Use Europe/Moscow in code, never the abbreviation and never a hard-coded offset.

Saint Petersburg · Europe/Moscow
09:41:02
Thursday, 13 August 2026 · MSK · UTC+03:00
vs
Coordinated Universal Time · UTC
06:41:02
Thursday, 13 August 2026 · UTC · UTC+00:00

The identifier to put in your code

IANA time zone identifier
Europe/Moscow
GET /api/now/Europe/Moscow

MSK is a label, not an identifier. Abbreviations are unregistered, they collide across regions, and no date library resolves them reliably. The IANA name carries the full history of this place's offset and daylight-saving rule changes, so code written against it keeps working when a government moves the clocks.

Shortcut: this page is utctime.app/saint-petersburg, and it also answers to /led/st-petersburg — type any of them straight into the address bar. See every city and code →

Daylight saving

Europe/Moscow is on MSK (UTC+03:00) — its standard clock.

no clock change scheduled — fixed at UTC+03:00 all year

Conversions involving this zone only shift when the other side changes its clocks.

A timestamp from Saint Petersburg, in every format rendered in this zone · copy any row

FormatValueCopy
ISO 8601 (local, with offset)
What a timestamp from this zone should look like
2026-08-13T09:41:02+03:00
RFC 3339 (local)
The JSON-API form, offset preserved
2026-08-13T09:41:02+03:00
ISO 8601 (UTC)
The same instant, normalised to UTC
2026-08-13T06:41:02Z
Unix timestamp
Identical everywhere — epoch time has no timezone
1786603262
Unix milliseconds
Also zone-independent
1786603262266
RFC 2822 (local)
Email Date: header from this zone
Thu, 13 Aug 2026 09:41:02 +0300
Date (local)
Calendar date here, which can differ from UTC
2026-08-13
Time (local, 24-hour)
Wall-clock time here
09:41:02
Time (local, 12-hour)
Wall-clock time with AM/PM
09:41:02 AM
UTC offset
Current offset, including any daylight saving
+03:00
IANA identifier
The only form you should hard-code
Europe/Moscow
ISO week date (local)
Year-week-weekday here
2026-W33-4
The Unix timestamp does not change here. Epoch time counts seconds since 1970-01-01T00:00:00Z and is the same integer at the same instant everywhere on Earth. Only the rendering above is local — which is exactly why storing epoch integers makes timezone bugs disappear, and storing bare local strings creates them.

Get the current time in Saint Petersburg using the IANA name

Python
from datetime import datetime
from zoneinfo import ZoneInfo

now = datetime.now(ZoneInfo("Europe/Moscow"))
print(now.isoformat())      # local time with offset
print(now.tzname())         # current abbreviation
print(int(now.timestamp())) # unix — same number everywhere
JavaScript
const tz = 'Europe/Moscow';
const now = new Date();
console.log(now.toLocaleString('en-GB', { timeZone: tz }));
// ISO 8601 with the zone's offset:
console.log(new Intl.DateTimeFormat('sv-SE', { timeZone: tz,
  dateStyle: 'short', timeStyle: 'medium' }).format(now));
Go
loc, err := time.LoadLocation("Europe/Moscow")
if err != nil { log.Fatal(err) }
now := time.Now().In(loc)
fmt.Println(now.Format(time.RFC3339))
Java
import java.time.*;

ZonedDateTime now = ZonedDateTime.now(ZoneId.of("Europe/Moscow"));
System.out.println(now);                  // with offset
System.out.println(now.toInstant());      // UTC instant
C#
var tz = TimeZoneInfo.FindSystemTimeZoneById("Europe/Moscow");
var now = TimeZoneInfo.ConvertTime(DateTimeOffset.UtcNow, tz);
Console.WriteLine(now.ToString("o"));
Rust
// chrono = "0.4", chrono-tz = "0.9"
use chrono::Utc;
use chrono_tz::Tz;

let tz: Tz = "Europe/Moscow".parse().unwrap();
let now = Utc::now().with_timezone(&tz);
println!("{}", now.to_rfc3339());
PHP
$now = new DateTimeImmutable('now', new DateTimeZone('Europe/Moscow'));
echo $now->format(DATE_ATOM), PHP_EOL;
SQL — PostgreSQL
SELECT now() AT TIME ZONE 'Europe/Moscow' AS local_time,
       extract(epoch FROM now())::bigint AS unix_seconds;
Bash
TZ='Europe/Moscow' date +"%Y-%m-%dT%H:%M:%S%z"
TZ='Europe/Moscow' date          # human readable

Convert

Looking for sunrise, day length or a meeting overlap? That is the consumer view, and it lives on our sibling site. worldclock.free/saint-petersburg. This page stays focused on offsets, identifiers and formats.

Nearby

Same zone (Europe/Moscow) — identical offset, always:

Elsewhere in Russia:

Saint Petersburg time zone questions

What is the UTC offset in Saint Petersburg right now?
Saint Petersburg is UTC+03:00 — 3 hours ahead of UTC. The abbreviation currently in force is MSK, and the local time is 09:41 on Thursday, 13 August 2026.
Which timezone identifier should I use for Saint Petersburg in code?
Europe/Moscow. Pass that string to ZoneInfo in Python, ZoneId.of in Java, time.LoadLocation in Go, or the timeZone option of Intl.DateTimeFormat in JavaScript. Do not store UTC+03:00 as a fixed offset and do not store the abbreviation MSK — the offset changes with the seasons and with the law, and the identifier is what carries those rules.
Does Saint Petersburg observe daylight saving time?
No. Europe/Moscow stays on UTC+03:00 all year, so any conversion involving it only moves when the OTHER side of the conversion changes its clocks.
Does the Unix timestamp change in Saint Petersburg?
No — and this is the most common misconception about timezones. A Unix timestamp counts seconds since 1970-01-01T00:00:00Z and is the same integer at the same instant everywhere on Earth. Only the rendering changes. If your database stores an epoch integer you have no timezone problem; if it stores '2026-01-01 09:00:00' with no offset, you do.
What airport and city codes point at Saint Petersburg?
This page also answers to LED, ST-PETERSBURG. They all redirect here, because Saint Petersburg has one canonical page rather than one per code.

Keyboard shortcuts

cCopy the ISO 8601 timestamp
uCopy the Unix timestamp
/Focus the timezone search
tToggle light and dark
?This help
EscClose