对于我的java程序,我导入了Calendar类并创建了一个名为cal的getInstance()。下面的代码是它自己的方法和类。
import java.util.Calendar;
Calendar cal = Calendar.getInstance();我正在尝试添加字符串覆盖率,这将等于下面的代码。
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
发布于 2022-02-27 22:04:05
java.time
您正在使用一个糟糕的日期时间类,该类多年前被JSR 310中定义的现代java.time类所取代。
捕获时区中所看到的当前时刻。
ZonedDateTime zdt = ZonedDateTime.now() ; // Uses JVM’s current default time zone.或者,显式指定时区。
ZoneId z = ZoneId.of( "America/Edmonton" ) ;
ZonedDateTime zdt = ZonedDateTime.now( z ) ;在Java 15+中,我们有文本块特性使您的文本创建更加容易。文本块不直接支持内插。使用String#format。
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 );跑的时候。
coverage =
PAYOUT FOR EARTHQUAKE DAMAGE
Homeowner: Bob
Date: Feb 27, 2022
Time: 3:20:32 PM与遗留代码进行互操作
如果必须使用Calendar类与尚未更新为java.time的旧代码进行互操作,则可以来回转换。使用添加到旧类中的新转换方法。
从传统到现代的转变。投给GregorianCalendar。如果有可能出现不同的具体类,请使用instanceof进行测试。
ZonedDateTime zdt = ( ( GregorianCalendar ) calendar ).toZonedDateTime() ;从现代到传统的转换。
Calendar cal = GregorianCalendar.from( zdt ) ;如果使用Calendar学习教科书或教程,则需要一本最新的教科书或教程。
https://stackoverflow.com/questions/71288786
复制相似问题