我如何添加18作为一天,以当前月使用java即时



我可以使用

获取当前日期
Instant.now()

我希望得到18-<current month>-<current year>

我赞同Basil Bourque的回答。然而,如果您正在寻找一个Instant对象,您可以通过调整UTC当前的OffsetDateTime到每月的第18天来获得它,如下所示:

public class Main {
public static void main(String[] args) {
Instant thisInstantOn18th = OffsetDateTime.now(ZoneOffset.UTC)
.with(ChronoField.DAY_OF_MONTH, 18)
.toInstant();
System.out.println(thisInstantOn18th);
}
}

:

2022-12-18T19:19:20.128313Z

Trail: Date Time了解更多关于现代Date-Time API的信息.

br

YearMonth                             // Represents a year and month only, no day of month. 
.now( 
ZoneId.of( "America/Edmonton" )   // Returns a `ZoneId` object. 
)
.atDay( 18 )                          // Returns a `LocalDate` object. 
.format(
DateTimeFormatter
.ofPattern( "dd-MM-uuuu" )
)                                     // Returns a `String` object. 
<标题>

详细信息正如Ole V.V.的注释所解释的那样,您使用了错误的类。这里不需要Instant

  • 表示日期,使用LocalDate
  • 使用YearMonth表示年份和月份。

获取当前年/月。

这样做需要一个时区。对于任何给定的时刻,全球各地的日期都因时区而异。因此,当前月份在日本东京可能同时是"下个月",而在俄亥俄州托莱多可能同时是"上个月"。

ZoneId z = ZoneId.of( "Pacific/Auckland" ) ;
YearMonth ym = YearMonth.now( z ) ;

如果您希望当前月份与UTC的小时-分钟-秒偏移为0,请使用ZoneOffset.UTC常量。

YearMonth ym = YearMonth.now( ZoneOffset.UTC ) ;

应用一个月中的某一天来获取日期。

LocalDate ld = ym.atDay( 18 ) ;

生成标准ISO 8601格式的文本。

String output = ld.toString() ;

生成特定格式的文本。

DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd-MM-uuuu" ) ;
String output = ld.format( f ) ;

相关内容

  • 没有找到相关文章

最新更新