越南文的日期格式(AM \ PM)

时间:2019-11-12 06:41:49

标签: android locale simpledateformat datetime-format

我想向中国人和越南人显示lokalize日期,但是不知何故AM / PM不会翻译成越南语。

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

3 个答案:

答案 0 :(得分:1)

java.time

java.util 日期时间 API 及其格式化 API SimpleDateFormat 已过时且容易出错。建议完全停止使用它们并切换到 modern Date-Time API*

使用 java.time(现代日期时间 API)的解决方案:

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

ONLINE DEMO

modern Date-Time API 了解有关 Trail: Date Time* 的更多信息。


* 出于任何原因,如果您必须坚持使用 Java 6 或 Java 7,您可以使用 ThreeTen-Backport,它将大部分 java.time 功能向后移植到 Java 6 & 7. 如果您正在为 Android 项目工作并且您的 Android API 级别仍然不符合 Java-8,请检查 Java 8+ APIs available through desugaringHow to use ThreeTenABP in Android Project

答案 1 :(得分:0)

如果您想显示AM/PM,则可以尝试使用Locale.ENGLISH

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

答案 2 :(得分:0)

对于仍在搜索此主题的任何人,我已经手动编写了它。我上传了 my file here 以防你不想写。

用法:

if (doc.exists)