我正在研究在Java中获得Date and Time的不同方法,而阅读文档时无法理解下面这句话的意思.

不幸的是,这些函数的API不适合国际化.

以上引用来自Java的Date类的文档. 这是什么意思? 这就是Date类的方法被弃用的原因吗?

推荐答案

tl;dr

仅使用java.time个类.切勿使用Date/Calendar等.

ZonedDateTime.now(
                ZoneId.of( "Asia/Tokyo" )
        )
        .format(
                DateTimeFormatter
                        .ofLocalizedDateTime( FormatStyle.FULL )
                        .withLocale( Locale.GERMANY )
        )

日本标准时间2023年5月7日星期日04:53:02

Avoid legacy date-time classes

你问:

这就是Date类的方法被弃用的原因吗?

遗留的Date-Time类充斥着糟糕的设计决策,由不了解Date-Time处理的人编写.缺乏国际化只是many个问题之一.

试图理解这些遗留类是浪费时间,除非您想学习如何进行正确的面向对象编程.这些班级在几年前被现代的java.time个班级取代,这些班级被JSR 310个班级定义.

既不使用两个Date类,也不使用CalendarSimpleDateFormatGregorianCalendar等.?只使用java.time包中的Date-Time类.把你宝贵的学习时间集中在java.time点上.

java.time

java.time个类通过?DateTimeFormatter类提供internationalization个.

在现代Java中,本地化信息来自Unicode Consortium发布的Common Locale Data Repository Project (CLDR).

以下是一些示例代码.

捕捉当前的时刻,就像在wall-clock time/calendar used by the people of Japan中看到的那样.为此,请使用ZonedDateTime类.使用ZoneId类指定感兴趣的时区.

ZoneId zoneIdTokyo = ZoneId.of( "Asia/Tokyo" );
ZonedDateTime zdtTokyo = ZonedDateTime.now( zoneIdTokyo );

使用French Canadian个本地化(人类语言和文化规范)生成代表那个时刻的文本.

Locale locale = Locale.CANADA_FRENCH;
DateTimeFormatter formatter =
        DateTimeFormatter
                .ofLocalizedDateTime( FormatStyle.FULL )
                .withLocale( locale );
String output = zdtTokyo.format( formatter );

转储到控制台.

System.out.println( "zdtTokyo.toString() = " + zdtTokyo );
System.out.println( "output = " + output );

运行时:

zdtTokyo.toString() = 2023-05-07T04:47:54.551174+09:00[Asia/Tokyo]
output = dimanche 7 mai 2023, 04 h 47 min 54 s heure normale du Japon

Java相关问答推荐

Jooq隐式地将bigint转换为数字,并且索引不起作用

使用log 4j2格式的Hibernate 显示SQL日志(log)

如何为具有多对多关系的实体的给定SQL查询构建JPA规范?

具有额外列的Hibert多对多关系在添加关系时返回NonUniqueHealthExcellent

无法找到符号错误—Java—封装

CSS应用于一个端点,但不应用于Thymeleaf中的另一个端点

有关手动创建的包的问题

Java inline Double条件和值解装箱崩溃

如何确定springboot在将json字段转换为Dto时如何处理它?

我正在try 跟踪数组中最大的两个数字

测试容器无法加载类路径初始化脚本

测试何时使用Mockito强制转换对象会导致ClassCastException

带错误BER验证的itext8签名返回pdf

类型集合的Jackson JsonNode:类型引用的对象读取器应该是Singleton吗?

在处理2个映射表时,没有更多的数据可从套接字读取

为什么在下面的Java泛型方法中没有类型限制?

深度优先搜索实现:算法只向右搜索

无法在Java中获取ElastiCache的AWS CloudWatch指标

Spring Mapstruct如何获取Lazy初始化实体字段的信息?

如何使用java区分以下结果