java - 如何在 Java 中更改时间格式 - "am/pm"与 "AM/PM"

之前创建的测试使用 DateTimeFormatter.ofPattern("ha"); 并返回 "10AM"(对于 '2017-04-09T10:00-06 :00[美国/山区]').

在我的 MacOs 和 Java 下 ['openjdk version "11.0.12"'] 我得到了 "10am"

"10AM" != "10am"

在规范中我看到“ha”应该创建“10AM”而不是“10am” 参见:https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html

有什么建议吗?

最佳答案

DateTimeFormatter 是一种语言环境敏感类型,即它的解析和格式化取决于 语言环境。检查Never use SimpleDateFormat or DateTimeFormatter without a Locale了解更多信息。

如果您有英文 Locale,并且您希望输出始终为单一大小写(即大写),您可以将字符串操作与格式化字符串链接起来,例如

import java.time.LocalTime;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

public class Main {
    public static void main(String[] args) {
        System.out.println(
                LocalTime.now(ZoneOffset.UTC)
                    .format(DateTimeFormatter.ofPattern("ha", Locale.ENGLISH))
                    .toUpperCase()
        );
    }
}

示例运行的输出:

6AM

ONLINE DEMO

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


* 如果您正在为 Android 项目工作并且您的 Android API 级别仍然不符合 Java-8,请检查 Java 8+ APIs available through desugaring .注意Android 8.0 Oreo 已经提供了support for java.time .

关于java - 如何在 Java 中更改时间格式 - "am/pm"与 "AM/PM",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69566133/

相关文章:

amazon-web-services - 在哪里可以找到 AWS ARN 中服务和资源类型部分的可

r - 减去上面不是 NA 的数字

r - 计算数据框中变量中多个字母的出现次数?

odata - 将空值传递给 OData V2 Edm.Time 属性

c# - GraphQL : Not Getting EF Related objects afte

vue.js - Module parse failed : Unexpected token (3

delphi - 如何在 Delphi 中以结果记录退出?

c++ - 将 std::string 转换为 std::string_view 的时间复杂度

swift - 如何区分 Swift 中的泛型值是什么?

flutter - 如何修复 vscode 上的 Flutter_localizations 错误?