Jakarta time zone — UTC+07:00 right now (WIB)
Jakarta, Indonesia, is currently on WIB (UTC+07:00) — 7 hours ahead of UTC. Use Asia/Jakarta in code, never the abbreviation and never a hard-coded offset.
The identifier to put in your code
WIB 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.
Daylight saving
Asia/Jakarta is on WIB (UTC+07:00) — its standard clock.
no clock change scheduled — fixed at UTC+07:00 all year
Conversions involving this zone only shift when the other side changes its clocks.
A timestamp from Jakarta, in every format rendered in this zone · copy any row
| Format | Value | Copy |
|---|---|---|
ISO 8601 (local, with offset) What a timestamp from this zone should look like |
2026-08-13T14:44:25+07:00 | |
RFC 3339 (local) The JSON-API form, offset preserved |
2026-08-13T14:44:25+07:00 | |
ISO 8601 (UTC) The same instant, normalised to UTC |
2026-08-13T07:44:25Z | |
Unix timestamp Identical everywhere — epoch time has no timezone |
1786607065 | |
Unix milliseconds Also zone-independent |
1786607065158 | |
RFC 2822 (local) Email Date: header from this zone |
Thu, 13 Aug 2026 14:44:25 +0700 | |
Date (local) Calendar date here, which can differ from UTC |
2026-08-13 | |
Time (local, 24-hour) Wall-clock time here |
14:44:25 | |
Time (local, 12-hour) Wall-clock time with AM/PM |
02:44:25 PM | |
UTC offset Current offset, including any daylight saving |
+07:00 | |
IANA identifier The only form you should hard-code |
Asia/Jakarta | |
ISO week date (local) Year-week-weekday here |
2026-W33-4 |
Get the current time in Jakarta using the IANA name
from datetime import datetime
from zoneinfo import ZoneInfo
now = datetime.now(ZoneInfo("Asia/Jakarta"))
print(now.isoformat()) # local time with offset
print(now.tzname()) # current abbreviation
print(int(now.timestamp())) # unix — same number everywhere
const tz = 'Asia/Jakarta';
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));
loc, err := time.LoadLocation("Asia/Jakarta")
if err != nil { log.Fatal(err) }
now := time.Now().In(loc)
fmt.Println(now.Format(time.RFC3339))
import java.time.*;
ZonedDateTime now = ZonedDateTime.now(ZoneId.of("Asia/Jakarta"));
System.out.println(now); // with offset
System.out.println(now.toInstant()); // UTC instant
var tz = TimeZoneInfo.FindSystemTimeZoneById("Asia/Jakarta");
var now = TimeZoneInfo.ConvertTime(DateTimeOffset.UtcNow, tz);
Console.WriteLine(now.ToString("o"));
// chrono = "0.4", chrono-tz = "0.9"
use chrono::Utc;
use chrono_tz::Tz;
let tz: Tz = "Asia/Jakarta".parse().unwrap();
let now = Utc::now().with_timezone(&tz);
println!("{}", now.to_rfc3339());
$now = new DateTimeImmutable('now', new DateTimeZone('Asia/Jakarta'));
echo $now->format(DATE_ATOM), PHP_EOL;
SELECT now() AT TIME ZONE 'Asia/Jakarta' AS local_time,
extract(epoch FROM now())::bigint AS unix_seconds;
TZ='Asia/Jakarta' date +"%Y-%m-%dT%H:%M:%S%z"
TZ='Asia/Jakarta' date # human readable
Convert
Nearby
Elsewhere in Indonesia: