首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用月名显示一个漂亮的时间戳

问用月名显示一个漂亮的时间戳
EN

Stack Overflow用户
提问于 2021-12-27 17:11:14
回答 1查看 117关注 0票数 1

我有一个Timestamp对象,我想显示它。

实际上,我使用的是new Timestamp(System.currentTimeMillis()).toLocaleString(),我的结果是:

27d. 2021 17:54:35

但是:

  • 不推荐使用toLocaleString()方法
  • 它根据计算机的lang返回值,因此它可以显示如下:

2021年12月27日17:54:35

这不是我想要的。在我的个人电脑里,用法语来说,很好。但是,在VPS上是不好的。

而且,所有被发现的线程都只是在谈论格式化,而没有月名,这不是我想要的。

我怎么能用法语轻松地显示时间戳呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-27 18:06:48

tl;dr

使用添加到旧类Timestamp的新转换方法将其转换为现代java.time类。

代码语言:javascript
复制
Timestamp myTimestamp = Timestamp.from( Instant.now() );  // Simulate receiving a `Timestamp` object from old code not yet updated to *java.time*. 
System.out.println(
        myTimestamp
                .toInstant()                              // Convert from legacy class to modern class.
                .atZone(                                  // Adjust into a time zone.
                        ZoneId.of( "Asia/Tokyo" )
                )                                         // Returns a `ZonedDateTime` object. 
                .format(
                        DateTimeFormatter
                                .ofLocalizedDateTime(
                                        FormatStyle.FULL
                                )
                                .withLocale(
                                        Locale.FRANCE
                                )
                )                                          // Returns a `String` object, generated text.
);

请参见这段代码在IdeOne.com现场运行。

狂欢节28 décembre 2021à05:39:58

详细信息

Timestamp是一个可怕的遗留日期-时间类。这些类是多年前的被现代取代类。不要使用时间戳、日期、日历、SimpleDateFormat等。

捕捉世界协调时所看到的当前时刻,以零小时-分-秒的偏移.

代码语言:javascript
复制
Instant instant = Instant.now() ;

捕捉在特定时区中看到的当前时刻。

代码语言:javascript
复制
ZoneId z = ZoneId.of( "America/Montreal" ) ;
ZonedDateTime zdt = ZonedDateTime.now( z ) ;

以自动本地化格式生成文本。指定一个地区,以确定翻译中使用的人类语言以及在缩写、大写、元素顺序等中使用的文化规范。

代码语言:javascript
复制
Locale locale = Locale.CANADA_FRENCH ;
DateTimeFormatter f = DateTimeFormatter.ofLocalizedDateTime( FormatStyle.MEDIUM ).withLocale( locale ) ;
String output = zdt.format( f ) ;

如果从类似于SQL标准类型TIMESTAMP WITH TIME ZONE的数据类型的数据库列中接收到某个时间,请在Java中使用符合JDBC4.2或更高版本的JDBC驱动程序的OffsetDateTime类。

代码语言:javascript
复制
OffsetDateTime odt = myResultSet.getObject( … , OffsetDateTime.class ) ;

调整到所需的时区以生成ZonedDateTime对象。

代码语言:javascript
复制
ZonedDateTime zdt = odt.atZoneSameInstant( z ) ;

所有这些都已经在堆栈溢出上处理了很多次。寻找更多的知识。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70498444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档