标签: java-time

ISO 8601的月 - 日部分是-MM-DD格式吗?

Java 8日期/时间API(java.time)有一个MonthDay类,用于表示一个月和一天.因此太乔达时库提供MONTHDAY类.

在java.time中,该MonthDay.toString()方法声明为:

将此月 - 日输出为字符串,例如 - 12-03.

大多数java.time的类都有自己的toString()方法输出它们所代表的概念的标准ISO 8601的表示(YYYY-MM-DD对LocalDate等),所以我希望这个--MM-DD格式是标准的为好.

但我在ISO 8601标准中找不到这个.

是月日由ISO 8601定义的概念,如果是的话,是--MM-DD标准的格式?

背景:我正在用另一种语言开发日期/时间API.

datetime date iso8601 java-time

4
推荐指数
1
解决办法
503
查看次数

Java 8 DateTimeFormatters常量在哪里定义?

我在看的DateTimeFormatter班,我想知道在那里就像是常数"M","EEE"和"YY"等被定义.更具体地讲,应该是这样的地方给一个代码ChronoField和TextStyle,它应该返回的DateTimeFormatter字符串片断如(ChronoField.MONTH_OF_YEAR, TextStyle.SHORT)要映射到的字符串"MMM"

java datetime-format java-8 java-time

4
推荐指数
1
解决办法
450
查看次数

如何从Instant和时间字符串构造ZonedDateTime?

给定一个对象Instant,time string表示特定时间ZoneId,如何构造一个ZonedDateTime具有日期部分(年,月,日)的对象,从给定ZoneId的时刻和给定的时间部分time string?

例如:

给定Instant值1437404400000(相当于20-07-2015 15:00 UTC),时间字符串21:00,以及ZoneId代表Europe/London的对象,我想构造一个ZonedDateTime相当于20-07的对象-2015 21:00欧洲/伦敦.

java java-8 java-time zoneddatetime

4
推荐指数
2
解决办法
5983
查看次数

使用Java 8 Time API以毫秒为单位获取第一次和最后一次时间

我正在将时间计算从自我实现的代码转换为Java 8 Time API。

我需要一个java.time.Year或java.time.Month类的开始和结束时间(以毫秒为单位),我计划稍后在另一层中使用JFreeChart。

我需要一个像功能getFirstMillisecond()及getLastMilliSecond()从org.jfree.data.time.RegularTimePeriod类的JFreeChart的。

我已经实现了类似以下的代码:

public static long getStartTimeInMillis(java.time.Year year, java.time.Month month) {       
    if (year != null && month != null) {
        return LocalDate.of(year.getValue(), month, 1).with(TemporalAdjusters.firstDayOfMonth()).
                atStartOfDay().atZone(TimeZone.getDefault().toZoneId()).toInstant().toEpochMilli();
    } else if (year != null) {
        return LocalDate.of(year.getValue(), java.time.Month.JANUARY, 1).with(TemporalAdjusters.firstDayOfMonth()).
                atStartOfDay().atZone(TimeZone.getDefault().toZoneId()).toInstant().toEpochMilli();
    }       
    return 0;
}

public static long getEndTimeInMillis(java.time.Year year, java.time.Month month) {
    if (year != null && month != null) {
        return LocalDate.of(year.getValue(), month, 1).with(TemporalAdjusters.lastDayOfMonth()).
                atTime(OffsetTime.MAX).toLocalDateTime().atZone(TimeZone.getDefault().toZoneId()).toInstant().toEpochMilli();
    } else if …
Run Code Online (Sandbox Code Playgroud)

java jfreechart java-8 java-time

4
推荐指数
1
解决办法
507
查看次数

按间隔对Java 8日期进行分组

使用Java 8 java.time框架,如何将日期分组为间隔?例如,每隔10分钟作为一个间隔,并给出一个列表LocalTime

List<LocalTime> list = Arrays.asList(LocalTime.of(0,9),LocalTime.of(0,11),LocalTime.of(0,19));

如果以10分钟的间隔进行分组,则LocalTime.of(0,9)应该在第一组中,但LocalTime.of(0,11),LocalTime.of(0,19)在第二个时间间隔内.

java java-8 java-stream java-time

4
推荐指数
1
解决办法
2794
查看次数

使用Java Time显示每个月的天数

我想显示一年中每个月的天数

LocalDate start = LocalDate.of(2016, 01, 01);
LocalDate end = start.plusYears(1);
Period everyMonth = Period.ofMonths(1);
for (;start.isBefore(end); start = start.plus(everyMonth)) {
    System.out.println(Period.between(start, start.plus(everyMonth)).getDays());
}
Run Code Online (Sandbox Code Playgroud)

为什么我会得到12 0?

java time java-time

4
推荐指数
1
解决办法
296
查看次数

将java.time.temporal.Temporal转换为java.util.Date

如何将java.time.temporal.Temporal实例转换为java.util.Date实例?

java.time.temporal.Temporal someTemporal = Instant.now();
java.util.Date some Temporal = x(someTemporal);
Run Code Online (Sandbox Code Playgroud)

我已经看过Oracle的遗留时间跟踪文档,但找不到合适的解决方案.

java java-8 java-time

4
推荐指数
2
解决办法
7118
查看次数

从LocalDate添加和减去Period不会产生相同的日期

我使用java 8 LocalDate和Period类来添加和删除年,月和日.为什么在某些情况下如果添加Period到date并删除相同的句点java 8又返回另一个日期?

    LocalDate date = LocalDate.of(2023, 1, 30);
    Period period = Period.of(6, 1, 1);
    System.out.println(date.plus(period).minus(period));
Run Code Online (Sandbox Code Playgroud)

为什么结果是2023-01-31而不是2023-01-30

java java-time

4
推荐指数
1
解决办法
1061
查看次数

如何在格式化时从Java 8中获取日期的全名

使用新的Java 8 java.time API,我需要转换LocalDate并获取月和日的全名.像三月(不是三月)和周一(不是周一).3月13日星期五应格式化为3月13日星期五..不是3月13日星期五.

java localization date-formatting java-time

4
推荐指数
2
解决办法
1万
查看次数

仅将日期解析为Java 8中的LocalDateTime

我需要解析一个有时作为日期而有时作为日期/时间的字段.是否可以使用Java 8时间API为此使用单一数据类型?目前,我尝试使用LocalDateTime,但是对于以下调用,LocalDateTime.parse("1986-04-08", DateTimeFormatter.ofPattern("yyyy-MM-dd")) 我得到了一个

java.time.DateTimeException: Unable to obtain LocalDateTime from TemporalAccessor: {},ISO resolved to 1986-04-08 of type java.time.format.Parsed
Run Code Online (Sandbox Code Playgroud)

这是一些通用解析器的一部分,它接受日期/日期时间解析模式作为配置选项.因此,例如遵循具有硬编码解析模式的解决方案

if ("yyyy-MM-dd".equals(pattern)) {
    LocalDate.parse(value, DateTimeFormatter.ofPattern("yyyy-MM-dd"))).atStartOfDay()
}
Run Code Online (Sandbox Code Playgroud)

对我来说不是一个选择.

任何其他建议如何以干净的方式编码它是受欢迎的.

java java-8 java-time

4
推荐指数
2
解决办法
3302
查看次数