标签: java-time

在java.time中,如何计算添加月份的结果?

java.timeJDK 8中的JSR-310 API中,计算将日期添加到日期的结果的规则是什么.特别是,当您将1个月添加到1月31日这样的日期时会发生什么?

LocalDate initial = LocalDate.of(2012, 1, 31);  // 31st January 2012
LocalDate result = initial.plusMonths(1);
// what is the result?
Run Code Online (Sandbox Code Playgroud)

java datetime java-8 java-time

22
推荐指数
1
解决办法
8082
查看次数

22
推荐指数
2
解决办法
7113
查看次数

如何在Java 8中向LocalDate添加天数时跳过周末?

这里的其他答案指的是Joda API.我想用它来做java.time.

假设今天的日期是2015年11月26日 - 星期四,当我增加2个工作日时,我希望结果为2015年11月30日星期一.

我正在开发自己的实现,但如果已经存在的话会很棒!

编辑:

除了循环之外,有没有办法做到这一点?

我试图得到一个像这样的函数:

Y = f(X1,X2) where
Y is actual number of days to add,
X1 is number of business days to add, 
X2 is day of the week (1-Monday to 7-Sunday)
Run Code Online (Sandbox Code Playgroud)

然后给出X1X2(从日期的星期几得出),我们可以找到Y然后使用plusDays()方法LocalDate.

到目前为止,我还没有得出它,它不一致.任何人都可以确认循环,直到添加所需的工作日数是唯一的方法吗?

java algorithm java-time

21
推荐指数
3
解决办法
3万
查看次数

Instant vs LocalDateTime - 何时优先于另一个

我需要以UTC格式保存并显示我的服务器中发生的事件的日期时间.我可以选择使用Instant.now()或LocalDateTime.now(ZoneOffset.UTC)

我什么时候应该更喜欢一个?

java java-8 java-time

21
推荐指数
1
解决办法
4653
查看次数

java.time.format.DateTimeParseException:无法在索引21处解析文本

我得到的日期时间值为

created_at  '2012-02-22T02:06:58.147Z'
Read-only. The time at which this task was created.
Run Code Online (Sandbox Code Playgroud)

这是由Asana API提供的

Java 8用来解析日期时间如下

import java.time.*;
import java.time.format.*;

public class Times {

  public static void main(String[] args) {
    final String dateTime = "2012-02-22T02:06:58.147Z";
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'hh:mm:ss.SX");


    final ZonedDateTime parsed = ZonedDateTime.parse(dateTime, formatter);
    System.out.println(parsed);
  }
}
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我收到以下错误

Exception in thread "main" java.time.format.DateTimeParseException: Text '2012-02-22T02:06:58.147Z' could not be parsed at index 21
    at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1947)
    at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1849)
    at java.time.ZonedDateTime.parse(ZonedDateTime.java:597)
    at Times.main(Times.java:11)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) …
Run Code Online (Sandbox Code Playgroud)

java datetime java-8 java-time

21
推荐指数
2
解决办法
9万
查看次数

Java 8 Date相当于具有多种解析器格式的Joda的DateTimeFormatterBuilder?

我目前有一个Joda日期解析器,它使用DateTimeFormatterBuilder,我可能会收到六种不同的日期格式.

我正在迁移到Java 8的Date例程,并没有看到等效的.

如何使用Java 8 Dates做这样的事情?

DateTimeParser[] parsers = { 
    DateTimeFormat.forPattern( "yyyy/MM/dd HH:mm:ss.SSSSSS" ).getParser() ,
    DateTimeFormat.forPattern( "yyyy-MM-dd HH:mm:ss" ).getParser() ,
    DateTimeFormat.forPattern( "ddMMMyyyy:HH:mm:ss.SSS Z" ).getParser() ,
    DateTimeFormat.forPattern( "ddMMMyyyy:HH:mm:ss.SSS" ).getParser() ,
    DateTimeFormat.forPattern( "ddMMMyyyy:HH:mm:ss.SSSSSS" ).getParser() ,
    DateTimeFormat.forPattern( "yyyy-MM-dd HH:mm:ss.SSS" ).getParser() 
};

DateTimeFormatter dateTimeFormatterInput = new DateTimeFormatterBuilder()
     .append( null, parsers ).toFormatter();
Run Code Online (Sandbox Code Playgroud)

java jodatime java-time

21
推荐指数
3
解决办法
8254
查看次数

java.time.ZoneId是否有原因不包括ZoneIds的枚举?

得到ZoneId它像:

ZoneId.of("America/Sao_Paulo");
Run Code Online (Sandbox Code Playgroud)

要么

ZoneId.of(ZoneId.SHORT_IDS.get("BET"));
Run Code Online (Sandbox Code Playgroud)

为什么不存在Enum这样的价值的原因,如:

ZoneId.of(ZoneIds.AMERICA_SAO_PAULO);
Run Code Online (Sandbox Code Playgroud)

这似乎不容易出错,而且更加自动完成友好?

java timezone java-8 java-time

21
推荐指数
3
解决办法
5072
查看次数

无法解决android studio中的符号'java.time.LocalDate'错误

我试图在我的Android应用程序中使用java.time.LocalDate,但是如果我尝试导入它,那么java.time中的任何类都会在Android Studio 1.1中无法解析符号错误

我能解决这个问题的唯一原因是它不支持java 8.真的是这样吗?

java android java-8 android-studio java-time

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

在数据库中使用Java 8 LocalDate和LocalDateTime进行Hibernate

我的要求是将所有日期和日期时间以UTC时区存储在数据库中.我正在使用Java 8 LocalDateLocalDateTime我的Hibernate实体.

那是正确的,因为LocalDateLocalDateTime不具有与之相关联的时区?

如果没有,我应该回到使用好旧(或传统?)Date&Timestamp

或者我应该使用Java 8 Instant?如果使用Instant,是否有可能只存储日期部分,没有时间?

数据库是MySQL和SQL Server,这是一个Spring Boot应用程序.

java hibernate utc java-time

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

在java.time.Period类中,withDays(),withMonths(),withYears()的目的是什么

我注意到java.time.Period类包含一些与可用的静态工厂方法相同的实例方法.

  • .withDays() 行为与...相同 Period.ofDays()
  • .withMonths() 行为与...相同 Period.ofMonths()
  • .withYears() 行为与...相同 Period.ofYears()

这些实例方法令人困惑,因为它们创建了一个新的Period并返回它们,但没有考虑它们被调用的Period的状态.

Period p = Period.ofWeeks(3);
p = p.withDays(2);
Run Code Online (Sandbox Code Playgroud)

似乎合乎逻辑的是,这将返回3周,2天的时间段,但它只返回2天的时间段.这就像我打电话一样Period.ofDays(2).

此外,还有五种其他静态工厂方法,没有类似的实例方法.

那么,这三种实例方法是否存在?如果是这样,用例是什么?

java java-8 java-time

20
推荐指数
1
解决办法
837
查看次数