越南语日期格式(AM\PM)



我试图向中文和越南语显示lokalize日期。但不知何故,AM/PM没有翻译成越南语。

Locale locale = new Locale("vi","VN");
String p1 = "MMM dd, yyy 'at' h:mm a";
SimpleDateFormat dateFormat = new SimpleDateFormat(p1, locale);

java.time

java.util日期-时间API及其格式API、SimpleDateFormat已过时且存在错误。建议完全停止使用它们,并切换到现代日期时间API*

使用现代日期时间APIjava.time的解决方案:

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;
public class Main {
public static void main(String[] args) {
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("MMM dd, uuuu 'at' h:mm a", new Locale("vi", "VN"));
System.out.println(LocalDateTime.of(2021, 8, 4, 10, 20).format(dtf));
System.out.println(LocalDateTime.of(2021, 8, 4, 20, 30).format(dtf));
}
}

样本运行的输出:

thg 8 04, 2021 at 10:20 SA
thg 8 04, 2021 at 8:30 CH

在线演示

跟踪:日期时间了解有关现代日期时间API*的更多信息。


*出于任何原因,如果您必须坚持使用Java 6或Java 7,您可以使用ThreeTen BackportJava.time的大部分功能向后移植到Java 6&7.如果您正在为Android项目工作,并且您的Android API级别仍然不符合Java-8,请检查通过desugaring和如何在Android项目中使用ThreeTenABP提供的Java 8+API

如果您想显示AM/PM,那么您将尝试使用Locale.ENGLISH:

Locale locale = Locale.ENGLISH;
String p1 = "MMM dd, yyy 'hiat' h:mm a";
SimpleDateFormat dateFormat = new SimpleDateFormat(p1, locale);

对于仍在搜索此主题的人,我已经手动编写了它。我把我的文件上传到这里,以防你不想写。

用法:

val spf = SimpleDateFormat("EEEE, dd/MM/yy hh:mm a", Locale.US)
val dateStr = spf.formatToVN(date)

最新更新