utc now / zones / sao paulo

Sao Paulo time zone — UTC-03:00 right now (UTC-03:00)

Sao Paulo, Brazil, is currently on UTC-03:00 (UTC-03:00) — 3 hours behind UTC. Use America/Sao_Paulo in code, never the abbreviation and never a hard-coded offset.

Sao Paulo · America/Sao_Paulo
02:34:44
Thursday, 13 August 2026 · UTC-03:00 · UTC-03:00
vs
Coordinated Universal Time · UTC
05:34:44
Thursday, 13 August 2026 · UTC · UTC+00:00

The identifier to put in your code

IANA time zone identifier
America/Sao_Paulo

UTC-03:00 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.

This page also answers to SAO, GRU, CGH — every one of them redirects here.

Daylight saving

America/Sao_Paulo is on UTC-03:00 (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 Sao Paulo, 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-13T02:34:44-03:00
RFC 3339 (local)
The JSON-API form, offset preserved
2026-08-13T02:34:44-03:00
ISO 8601 (UTC)
The same instant, normalised to UTC
2026-08-13T05:34:44Z
Unix timestamp
Identical everywhere — epoch time has no timezone
1786599284
Unix milliseconds
Also zone-independent
1786599284600
RFC 2822 (local)
Email Date: header from this zone
Thu, 13 Aug 2026 02:34:44 -0300
Date (local)
Calendar date here, which can differ from UTC
2026-08-13
Time (local, 24-hour)
Wall-clock time here
02:34:44
Time (local, 12-hour)
Wall-clock time with AM/PM
02:34:44 AM
UTC offset
Current offset, including any daylight saving
-03:00
IANA identifier
The only form you should hard-code
America/Sao_Paulo
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 Sao Paulo using the IANA name

Python
from datetime import datetime
from zoneinfo import ZoneInfo

now = datetime.now(ZoneInfo("America/Sao_Paulo"))
print(now.isoformat())      # local time with offset
print(now.tzname())         # current abbreviation
print(int(now.timestamp())) # unix — same number everywhere
JavaScript
const tz = 'America/Sao_Paulo';
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("America/Sao_Paulo")
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("America/Sao_Paulo"));
System.out.println(now);                  // with offset
System.out.println(now.toInstant());      // UTC instant
C#
var tz = TimeZoneInfo.FindSystemTimeZoneById("America/Sao_Paulo");
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 = "America/Sao_Paulo".parse().unwrap();
let now = Utc::now().with_timezone(&tz);
println!("{}", now.to_rfc3339());
PHP
$now = new DateTimeImmutable('now', new DateTimeZone('America/Sao_Paulo'));
echo $now->format(DATE_ATOM), PHP_EOL;
SQL — PostgreSQL
SELECT now() AT TIME ZONE 'America/Sao_Paulo' AS local_time,
       extract(epoch FROM now())::bigint AS unix_seconds;
Bash
TZ='America/Sao_Paulo' date +"%Y-%m-%dT%H:%M:%S%z"
TZ='America/Sao_Paulo' 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/sao-paulo. This page stays focused on offsets, identifiers and formats.

Nearby

Same zone (America/Sao_Paulo) — identical offset, always:

Elsewhere in Brazil:

Sao Paulo time zone questions

What is the UTC offset in Sao Paulo right now?
Sao Paulo is UTC-03:00 — 3 hours behind UTC. The abbreviation currently in force is UTC-03:00, and the local time is 02:34 on Thursday, 13 August 2026.
Which timezone identifier should I use for Sao Paulo in code?
America/Sao_Paulo. 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 UTC-03:00 — the offset changes with the seasons and with the law, and the identifier is what carries those rules.
Does Sao Paulo observe daylight saving time?
No. America/Sao_Paulo 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 Sao Paulo?
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 Sao Paulo?
This page also answers to SAO, GRU, CGH. They all redirect here, because Sao Paulo 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