小编Jod*_*hen的帖子

55
推荐指数
4
解决办法
5万
查看次数

java.time中的类是否与Joda-Time Interval相当?

我评估我的项目从使用迁移乔达时间java.time包的Java 8.在Joda-Time,我大量使用了这门Interval课程.我在java.time中找不到这样的东西.

有类似的课吗?

jodatime java-8 java-time

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

Java 8日期时间:从ZonedDateTime获取一天的开始

这些之间有什么区别:

zonedDateTime.truncatedTo(ChronoUnit.DAYS);

zonedDateTime.toLocalDate().atStartOfDay(zonedDateTime.getZone());
Run Code Online (Sandbox Code Playgroud)

有理由偏爱另一个吗?

谢谢

java datetime java-8 java-time

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

使用joda时间的两个日期之间的差异?

假设有两个日期A(开始时间)和B(结束时间).A&B可以是同一天甚至是不同日子的时间.我的任务是以秒为单位显示差异.我正在使用的日期格式是

Date Format :: "yyyy-MM-dd'T'HH:mm:ss.SSSZ" 
Run Code Online (Sandbox Code Playgroud)

例如

start date ::   "2011-11-16T14:09:23.000+00:00"
end date ::     "2011-11-17T05:09:23.000+00:00"            
Run Code Online (Sandbox Code Playgroud)

感谢帮助.

java jodatime

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

是否有GSON Joda Time序列化程序的标准实现?

我正在使用GSON将一些对象图序列化为JSON.这些对象图使用约达时间的实体(DateTime,LocalTime等).

谷歌"gson joda"的热门歌曲是这个页面:

它为类型适配器提供源org.joda.time.DateTime.此链接也是GSON用户指南中引用的内容.

我希望找到一个包含joda-time序列化程序的预卷库,我可以将其作为Maven依赖项引用 - 但我找不到一个.

有吗?或者我被迫在我自己的项目中复制该片段?

java jodatime gson

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

无法使用Java 8中的DateTimeFormatter和ZonedDateTime从TemporalAccessor获取ZonedDateTime

我最近搬到Java 8,希望更容易处理本地和分区时间.

但是,在我看来,在解析一个简单的日期时,我面临一个简单的问题.

public static ZonedDateTime convertirAFecha(String fecha) throws Exception {
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern(
            ConstantesFechas.FORMATO_DIA).withZone(
            obtenerZonaHorariaServidor());

    ZonedDateTime resultado = ZonedDateTime.parse(fecha, formatter);
    return resultado;
}
Run Code Online (Sandbox Code Playgroud)

就我而言:

  • fecha是'15/06/2014'
  • ConstantesFechas.FORMATO_DIA是'dd/MM/yyyy'
  • obtenerZonaHorariaServidor返回ZoneId.systemDefault()

所以,这是一个简单的例子.但是,解析会抛出此异常:

java.time.format.DateTimeParseException: Text '15/06/2014' could not be parsed: Unable to obtain ZonedDateTime from TemporalAccessor: {},ISO resolved to 2014-06-15 of type java.time.format.Parsed
Run Code Online (Sandbox Code Playgroud)

有小费吗?我一直在尝试解析和使用TemporalAccesor的不同组合,但到目前为止没有任何运气.

最好的祝福

java timezone datetime-format java-8 java-time

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

是否有JDK8 java.time的jackson数据类型模块?

我正在为新的JDK8 java.time类寻找一个模块.我查看了FasterXML GitHub项目列表,目前没有找到.

据我所知,Jackson仍然是针对JDK6编译的,所以不能直接使用这些类,并且必须将它构建为一个单独的模块,正如Joda所要求的那样.

我不介意启动这个项目,但是看看是否还有其他工作正在进行中.

jackson java-8 jackson-modules java-time

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

如何在Java中将Joda LocalDate转换为String?

我得到了答案:这很简单.

DateTimeFormatter fmt = DateTimeFormat.forPattern("MM/dd/yyyy");
String formattedDate = jodeLocalDateObj.toString( fmt );
Run Code Online (Sandbox Code Playgroud)

java date jodatime

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

JSR-310 - 解析具有可变长度的秒分数

有没有办法如何创建JSR-310格式化程序,能够用可变长度的秒分数解析以下日期/时间?

2015-05-07 13:20:22.276052
Run Code Online (Sandbox Code Playgroud)

要么

2015-05-07 13:20:22.276
Run Code Online (Sandbox Code Playgroud)

示例代码:

DateTimeFormatter formatter
= new java.time.format.DateTimeFormatterBuilder()
        .append( java.time.format.DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss") )
        .appendOptional( java.time.format.DateTimeFormatter.ofPattern(".SSSSSS") )
        .toFormatter();
formatter.parse("2015-05-07 13:20:22.276052", LocalDateTime::from);
Run Code Online (Sandbox Code Playgroud)

java java-time

27
推荐指数
1
解决办法
5342
查看次数

Java 8 java.time:在Instant vs LocalDateTime中添加TemporalUnit

我正在使用Java 8中的新java.time包.我有一个遗留数据库,它给了我java.util.Date,我转换为Instant.

我想要做的是添加一段基于另一个数据库标志的时间.我可以添加几天,几周,几个月或几年.我不想关心我要添加的内容,我希望将来能够添加更多选项.

我的第一个想法是Instant.plus(),但这给了我一个UnsupportedTemporalTypeException超过一天的价值.Instant显然不支持大单位时间的操作.好的,无论如何LocalDateTime.

所以这给了我这个代码:

private Date adjustDate(Date myDate, TemporalUnit unit){
    Instant instant = myDate.toInstant();
    LocalDateTime dateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
    dateTime = dateTime.plus(1, unit);
    Instant updatedInstant = dateTime.atZone(ZoneId.systemDefault()).toInstant();
    return new Date(dueInstant.toEpochMilli());
}
Run Code Online (Sandbox Code Playgroud)

现在,这是我第一次使用新的时间API,所以我可能在这里错过了一些东西.但是我必须离开这似乎很笨重:

Date --> Instant --> LocalDateTime --> do stuff--> Instant --> Date.
Run Code Online (Sandbox Code Playgroud)

即使我不必使用Date部分,我仍然认为它有点尴尬.所以我的问题是,我这样做完全错了,最好的办法是什么?


编辑:扩展评论中的讨论.

我想我现在更好地了解了LocalDateTime和Instant如何使用java.util.Date和java.sql.Timestamp.感谢大家.

现在,更实际的考虑.假设用户向我发送了他们在世界任何地方的日期,任意时区.他们发给我2014-04-16T13:00:00我可以解析的LocalDateTime.然后我将它直接转换为java.sql.Timestamp并在我的数据库中保留.

现在,我没有做任何其他事情,我从我的数据库中提取我的java.sql.timestamp,转换为LocalDateTime使用timestamp.toLocalDateTime().都好.然后我使用ISO_DATE_TIME格式将此值返回给我的用户.结果是2014-04-16T09:00:00.

我认为这种差异是因为某种类型的隐式转换到/来自UTC.我认为我的默认时区可能会应用于该值(EDT,UTC-4),这可以解释为什么数字关闭4小时.

新问题.从本地时间到UTC的隐式转换在哪里?保留时区的更好方法是什么.我不应该直接从当地时间作为字符串(2014-04-16T13:00:00)来LocalDateTime?我应该期待用户输入的时区吗?

java java-8 java-time

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