我试图向中文和越南语显示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 Backport将Java.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)