英文:
SimpleDateFormat Japanese time
问题
我有的时间是 -> 2020年9月15日 11:10:25
我正在使用这段代码将其格式化为日语
timeFormatStr = "YYYY MMMMMMMMMM DD HH:mm:ss z";
SimpleDateFormat sd = new SimpleDateFormat(timeFormatStr, locale);
timeStr = sdf.format(new Date(time));
timeStr看起来像这样(看起来不正确)。
2020 9月 259 23:10:25 UTC
知道应该使用什么格式字符串吗?我检查了地区是 - ja_JP.eucjp
谢谢
英文:
The time I have is -> September 15 2020 11:10:25
I am using this code to format it in Japanese
timeFormatStr = "YYYY MMMMMMMMMM DD HH:mm:ss z";
SimpleDateFormat sd = new SimpleDateFormat(timeFormatStr, locale);
timeStr = sdf.format(new Date(time));
The timeStr looks like this (does not look right).
2020 9月 259 23:10:25 UTC
Any idea what the format string should be? I checked that the locale is - ja_JP.eucjp
Thanks
答案1
得分: 2
YYYY MMMMMMMMMM DD HH:mm:ss z
不是日本人的日期和时间格式。您应该使用DateTimeFormatter
,并调用ofLocalizedDateTime
和withLocale
。这将产生一个以本地日本格式生成字符串的格式化程序。
String formatted = DateTimeFormatter
.ofLocalizedDateTime(FormatStyle.FULL) // 在这里选择一个样式
.withLocale(Locale.JAPANESE)
.format(ZonedDateTime.ofInstant(Instant.ofEpochMilli(time), ZoneOffset.UTC)); // 在这里选择一个时区
System.out.println(formatted); // 1970年1月1日木曜日 0時00分00秒 Z
您不应该再使用Date
对象。相反,您应该直接给DateTimeFormatter
一个ZonedDateTime
。
英文:
YYYY MMMMMMMMMM DD HH:mm:ss z
is not how the Japanese format their dates and times. You should use DateTimeFormatter
, and call ofLocalizedDateTime
and withLocale
. This will produce a formatter that produces strings in a native Japanese format.
String formatted = DateTimeFormatter
.ofLocalizedDateTime(FormatStyle.FULL) // choose a style here
.withLocale(Locale.JAPANESE)
.format(new Date(time).toInstant().atZone(ZoneOffset.UTC)); // choose a timezone here
System.out.println(formatted); // 1970年1月1日木曜日 0時00分00秒 Z
You shouldn't really be using Date
s anymore. You should instead give the DateTimeFormatter
a ZonedDateTime
directly.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论