首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java.util.Calendar格式mm/dd/yyyy和hh:mm:ss

java.util.Calendar格式mm/dd/yyyy和hh:mm:ss
EN

Stack Overflow用户
提问于 2022-02-27 22:00:43
回答 1查看 123关注 0票数 0

对于我的java程序,我导入了Calendar类并创建了一个名为cal的getInstance()。下面的代码是它自己的方法和类。

代码语言:javascript
复制
import java.util.Calendar;
Calendar cal = Calendar.getInstance();

我正在尝试添加字符串覆盖率,这将等于下面的代码。

代码语言:javascript
复制
coverage = String.format("%nPAYOUT FOR EARTHQUAKE DAMAGE"
                           + "%n%SHomeowner:  " + insured
                           + "%nDate:  " + cal.get(Calendar.DATE)
                           + "%nTime:  " + cal.get(Calendar.HOUR));

这只返回当前的一天和一小时。如何使它返回格式

日期: mm/dd/yyyy

时间: hh:mm:ss

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-27 22:04:05

java.time

您正在使用一个糟糕的日期时间类,该类多年前被JSR 310中定义的现代java.time类所取代。

捕获时区中所看到的当前时刻。

代码语言:javascript
复制
ZonedDateTime zdt = ZonedDateTime.now() ;  // Uses JVM’s current default time zone.

或者,显式指定时区。

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

在Java 15+中,我们有文本块特性使您的文本创建更加容易。文本块不直接支持内插。使用String#format

代码语言:javascript
复制
String insured = "Bob";
String template =
        """
        PAYOUT FOR EARTHQUAKE DAMAGE
        Homeowner: %1$s
        Date: %2$s
        Time: %3$s
        """;
String coverage =
        template.formatted(
                insured ,
                zdt.format(
                        DateTimeFormatter.ofLocalizedDate( FormatStyle.MEDIUM ).withLocale( Locale.US )
                ) ,
                zdt.format(
                        DateTimeFormatter.ofLocalizedTime( FormatStyle.MEDIUM ).withLocale( Locale.US )
                )
        );

System.out.println( "coverage = " + "\n" + coverage );

跑的时候。

代码语言:javascript
复制
coverage = 
PAYOUT FOR EARTHQUAKE DAMAGE
Homeowner: Bob
Date: Feb 27, 2022
Time: 3:20:32 PM

与遗留代码进行互操作

如果必须使用Calendar类与尚未更新为java.time的旧代码进行互操作,则可以来回转换。使用添加到旧类中的新转换方法。

从传统到现代的转变。投给GregorianCalendar。如果有可能出现不同的具体类,请使用instanceof进行测试。

代码语言:javascript
复制
ZonedDateTime zdt = ( ( GregorianCalendar ) calendar ).toZonedDateTime() ;

从现代到传统的转换。

代码语言:javascript
复制
Calendar cal = GregorianCalendar.from( zdt ) ;

如果使用Calendar学习教科书或教程,则需要一本最新的教科书或教程。

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

https://stackoverflow.com/questions/71288786

复制
相关文章

相似问题

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