Locale formatting is one of the easier parts of localization to get right and one of the easiest to forget. This article is a working reference for the Japan-specific formatting your app needs.
For the broader localization process, see the iOS and Android Japan localization step-by-step guide.
Dates
Acceptable formats in Japanese UI
| Format | When |
|---|---|
| 2026年5月10日 | Formal, prose, headers |
| 2026/5/10 | Most common in app UI |
| 2026/05/10 | Tabular data, technical contexts |
| 2026.05.10 | Less common, occasionally in date stamps |
| 5月10日 | When year is implied |
What not to use
5/10/2026— American format, parses ambiguously and feels foreign.10/5/2026— UK format, equally foreign in JP.May 10, 2026— English month names, never used in JP UI.2026-05-10— ISO format is OK in technical contexts but less common in user-facing UI.
Day of the week
Japanese days of the week:
- 日曜日 (にちようび, Sun)
- 月曜日 (げつようび, Mon)
- 火曜日 (かようび, Tue)
- 水曜日 (すいようび, Wed)
- 木曜日 (もくようび, Thu)
- 金曜日 (きんようび, Fri)
- 土曜日 (どようび, Sat)
In compact UI, the single-character abbreviation is standard:
日 月 火 水 木 金 土
These appear in calendars, schedule grids, and date pickers.
iOS implementation
let formatter = DateFormatter()
formatter.locale = Locale(identifier: "ja_JP")
formatter.dateStyle = .long // "2026年5月10日"
// or
formatter.dateFormat = "yyyy/MM/dd" // "2026/05/10"
Don't hardcode date format strings. Use DateFormatter with locale-aware styles, then override with custom dateFormat only when you need a specific UI shape.
Android implementation
val formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd")
.withLocale(Locale.JAPAN)
val date = LocalDate.now().format(formatter)
Or use DateUtils for relative formats ("2分前," "今日," "昨日").
Relative time
Japanese relative time is widely used in app UI:
- たった今 (just now)
- 〇分前 (n minutes ago)
- 〇時間前 (n hours ago)
- 昨日 (yesterday)
- 〇日前 (n days ago)
- 〇週間前 (n weeks ago)
- 〇か月前 (n months ago)
- 〇年前 (n years ago)
The 「か月」 (months) is sometimes written 「ヶ月」 — both are correct; pick one and stay consistent.
Time
Standard formats
| Format | When |
|---|---|
| 14:30 | Most common, 24-hour |
| 午後2:30 | Older style, with AM/PM marker |
| 14時30分 | Formal prose |
24-hour time is dominant in JP app UI. Don't use AM/PM unless the design calls for it specifically.
Edge case: midnight and noon
- 午前0:00 / 0:00 — midnight start of day.
- 24:00 — sometimes used for end-of-day deadlines, e.g., "5月10日24:00まで" (until midnight on May 10). This is a JP convention; 24:00 isn't an error.
Currency
Yen format
❌ JPY 1,000.00 ❌ ¥1000 ❌ ¥1,000.00 ✅ ¥1,000 ✅ 1,000円
Yen has no decimal places. Adding .00 is wrong (and looks like a foreign developer's tooling default).
The 「¥」 prefix and 「円」 suffix are interchangeable. Pick one and stay consistent within the app.
Comma separators every 3 digits: 1,000, 10,000, 100,000, 1,000,000.
iOS implementation
let formatter = NumberFormatter()
formatter.locale = Locale(identifier: "ja_JP")
formatter.numberStyle = .currency
formatter.maximumFractionDigits = 0
let priceString = formatter.string(from: 1000) // "¥1,000"
The maximumFractionDigits = 0 is important — without it, you get ¥1,000.00.
Android implementation
val formatter = NumberFormat.getCurrencyInstance(Locale.JAPAN)
formatter.maximumFractionDigits = 0
val priceString = formatter.format(1000) // "¥1,000"
Large yen amounts
Japanese has units for large numbers that English doesn't:
- 万 (man) = 10,000
- 億 (oku) = 100,000,000
- 兆 (chō) = 1,000,000,000,000
Conventions in JP UI:
- Under 10,000: write out (e.g., 5,000円).
- 10,000–9,999,999: write as 〇万 if rounded (e.g., 1万円 for 10,000) or as full digits.
- 10,000,000+: use 〇万 or 〇億 freely (e.g., 1億円).
For financial apps, use full digits. For marketing copy, the abbreviated forms are warmer ("100万人が使う" reads better than "1,000,000人が使う").
Numbers
Comma separators
Every 3 digits, same as English: 1,000 / 10,000 / 100,000.
Decimal point
Period ., same as English: 3.14, not 3,14.
Grouping for very large numbers
Japanese conventionally groups by 4 digits (万, 億, 兆 boundaries) rather than by 3 (thousands, millions). But in app UI, grouping by 3 with commas is universal.
Phone numbers
Japanese phone number formats:
- Mobile: 090-1234-5678 / 080-1234-5678 / 070-1234-5678
- Landline: 03-1234-5678 (Tokyo), 06-1234-5678 (Osaka), variable elsewhere
- Toll-free: 0120-123-456
Use hyphens between segments. Don't display as 09012345678 without hyphens (less readable).
Postal codes
Japanese postal code: 〒100-0001 (3 digits, hyphen, 4 digits, with optional 〒 prefix).
The 〒 mark is conventional but not strictly required in app UI. If you display it, use the full-width 〒.
Addresses
Japanese address order is reverse of Western (largest to smallest):
〒100-0001
東京都千代田区千代田1-1-1
皇居マンション 101号室
Components, in order:
- 郵便番号 (postal code)
- 都道府県 (prefecture) — 東京都, 大阪府, 京都府, or 〇〇県
- 市区町村 (city/ward/town)
- 丁目・番地 (block/lot, hyphenated)
- 建物名 (building name) and 部屋番号 (room number)
Forms should:
- Order fields top-to-bottom matching this order.
- Auto-fill 都道府県 and 市区町村 from the 郵便番号 (a 1990s convention that JP users still expect — see Japanese mobile UI conventions).
- Provide separate fields for 丁目, 番地, 建物名 if precision matters.
Don't combine address into one field
US apps that present address as a single text field feel sloppy in JP. Use the structured Japanese form layout.
Names
Name fields in Japanese forms typically have:
- 姓 (last name)
- 名 (first name)
- 姓カナ (last name reading in katakana)
- 名カナ (first name reading in katakana)
The katakana readings are used for sorting (Japanese alphabetical order is phonetic, so sorting by kanji doesn't work) and for printing on mailing labels. Skipping these fields makes the form feel sloppy to JP users.
Display convention
In display, JP apps typically show 姓 first, then 名, sometimes separated by a space:
❌ Jane Doe-style: ジェーン ドウ ✅ JP order: ドウ ジェーン (for foreign names) ✅ JP order: 山田 太郎 (for Japanese names)
For foreign personal names in JP UI, write in katakana with surname first. (Brand names stay in romaji — see Japanese script choice.)
Era Names and Year Counting
Japanese has a parallel year-counting system based on imperial era names:
- 令和 (Reiwa, 2019–present) — 令和8年 = 2026
- 平成 (Heisei, 1989–2019)
- 昭和 (Showa, 1926–1989)
In most consumer app UI, use the Western (西暦) year. Era names appear in:
- Government and tax-related forms.
- Older-demographic apps.
- Formal date formatting in healthcare or finance.
If you support era format, use OS-provided locale-aware formatters. Don't roll your own — era boundaries are sometimes added (a new emperor changes the era).
iOS
let formatter = DateFormatter()
formatter.locale = Locale(identifier: "ja_JP")
formatter.calendar = Calendar(identifier: .japanese)
formatter.dateFormat = "Gy年M月d日" // "令和8年5月10日"
Android
val era = LocalDate.now()
.format(DateTimeFormatter.ofPattern("Gy年M月d日")
.withChronology(JapaneseChronology.INSTANCE)
.withLocale(Locale.JAPAN))
Calendar Conventions
Week start
Japanese calendars start on Sunday, like the US. (Unlike Europe, which starts on Monday.) Apps targeting Japan should display Sunday-start calendars by default. Some scheduling apps offer a setting; default to Sunday for JP locale.
Public holidays
Japan has roughly 16 public holidays. If your app shows a calendar, marking JP public holidays is a small detail that JP users notice. Use the locale's calendar API rather than hardcoding.
Fiscal year
Japan's fiscal year runs April 1 – March 31, not Jan–Dec. Finance and business apps should accommodate or default to this convention.
Decimal and Percentage
Percentage format
50% — same as English; the
%sign is universal.
Decimal numbers
3.14 — period as decimal separator, same as English.
Negative numbers
Standard convention in app UI is the leading minus: -100. Parentheses-style accounting (100) is rare in JP consumer apps.
A Self-Check
- Dates use JP convention (yyyy/MM/dd or 年月日).
- Times use 24-hour format.
- Currency has no decimals for yen.
- Phone numbers use hyphens between segments.
- Postal codes display as 3-4 with hyphen.
- Address fields are structured (prefecture, city, block).
- Postal code triggers prefecture/city auto-fill.
- Name fields include katakana reading inputs.
- Calendar week starts on Sunday for JP locale.
- Era format is supported if app context calls for it.
Where to Go Next
- iOS and Android Localization for Japan: Step-by-Step
- Mobile UI Conventions Japanese Users Expect
- Handling Japanese Text Expansion in Mobile UI
- Testing Japanese Localization Before Launch
We audit shipping apps for the formatting issues above as part of every JP QA engagement. Contact us for a JP locale audit.