标签: java-time

如何从LocalDate和LocalDateTime中提取纪元?

如何LongLocalDateTime或的实例中提取纪元值LocalDate?我尝试了以下内容,但它给了我其他结果:

LocalDateTime time = LocalDateTime.parse("04.02.2014  19:51:01", DateTimeFormatter.ofPattern("dd.MM.yyyy  HH:mm:ss"));
System.out.println(time.getLong(ChronoField.SECOND_OF_DAY)); // gives 71461
System.out.println(time.getLong(ChronoField.EPOCH_DAY)); // gives 16105
Run Code Online (Sandbox Code Playgroud)

我想要的只是1391539861本地日期时间的值"04.02.2014 19:51:01".我的时区是Europe/OsloUTC + 1,夏令时.

time epoch java-8 java-time

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

如何将LocalDate转换为SQL Date Java?

如何将LocalDate转换为java.sql.Date

尝试:

Record r = new Record();
LocalDate date = new Date(1967, 06, 22);
r.setDateOfBirth(new Date(date));
Run Code Online (Sandbox Code Playgroud)

这失败了(不会编译),我能找到的就是Joda时间的东西.

我正在使用Java 8

java converter sqldatetime java-8 java-time

83
推荐指数
1
解决办法
7万
查看次数

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

75
推荐指数
9
解决办法
19万
查看次数

Unix纪录时间到Java Date对象

我有一个包含UNIX Epoch时间的字符串,我需要将其转换为Java Date对象.

String date = "1081157732";
DateFormat df = new SimpleDateFormat(""); // This line
try {
  Date expiry = df.parse(date);
 } catch (ParseException ex) {
  ex.getStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

标记的线是我遇到麻烦的地方.我无法弄清楚SimpleDateFormat()的参数应该是什么,或者即使我应该使用SimpleDateFormat().

java date java-time

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

尽管在Oracle Tutorial示例代码中显示,但Java 8 Instant类没有plusHours方法

该类Oracle Tutorial页面Instant显示了此示例代码:

Instant oneHourLater = Instant.now().plusHours(1);
Run Code Online (Sandbox Code Playgroud)

当我尝试编译此代码时,编译器抛出错误:

  • 错误
InstantPrint.java:6: error: cannot find symbol
        Instant oneHourLater = Instant.now().plusHours(1);
                                            ^
  symbol:   method plusHours(int)
  location: class Instant

但是这个Java文档提到了plusHours()方法,但我检查了这个Instant类,它不包含plusHours()方法.

此后,为什么plusHours()在这个例子中提到这个方法呢?

java java-time

74
推荐指数
1
解决办法
2448
查看次数

为什么新的Java 8 Date Time API没有纳秒精度?

Java 8中新的Date Time API的一个特性应该是纳秒精度.但是,当我将当前日期时间打印到控制台时,就像这样

DateTimeFormatter formatter = DateTimeFormatter
    .ofPattern("yyyy-MM-dd'T'HH:mm:ss,nnnnnnnnnZ");
System.out.println(OffsetDateTime.now().format(formatter)); 
Run Code Online (Sandbox Code Playgroud)

我只看到毫秒精度:2015-11-02T12:33:26,746000000 + 0100

操作系统似乎确实支持纳秒精度.当我通过终端打印当前日期时间

date -Ins
Run Code Online (Sandbox Code Playgroud)

我看到2015-11-02T12:33:26,746134417 + 0100

如何在Java中获得纳秒精度?我在Ubuntu 14.04 64位上运行Oracle Java 1.8.0_66

java java-8 java-time

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

有没有办法在java 8中将ZoneId转换为ZoneOffset?

我有一个epoch秒和一个zoneId,方法1.它可以转换为LocalDateTime与系统默认的zoneId,但我找不到方法将第二个转换为LocalDateTime by method2,因为没有ZoneOffset.systemDefault.我认为它是模糊的.

import java.time.{Instant, LocalDateTime, ZoneId, ZoneOffset}

val epochSecond = System.currentTimeMillis() / 1000

LocalDateTime.ofInstant(Instant.ofEpochSecond(epochSecond), ZoneId.systemDefault())//method1
LocalDateTime.ofEpochSecond(epochSecond, 0, ZoneOffset.MAX)//method2
Run Code Online (Sandbox Code Playgroud)

java java-8 java-time

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

Java8 java.util.Date转换为java.time.ZonedDateTime

尝试转换为时java.util.Date,我收到以下异常java.time.LocalDate.

java.time.DateTimeException: Unable to obtain ZonedDateTime from TemporalAccessor: 2014-08-19T05:28:16.768Z of type java.time.Instant
Run Code Online (Sandbox Code Playgroud)

代码如下:

public static Date getNearestQuarterStartDate(Date calculateFromDate){

    int[] quaterStartMonths={1,4,7,10};     
    Date startDate=null;

    ZonedDateTime d=ZonedDateTime.from(calculateFromDate.toInstant());
    int frmDateMonth=d.getMonth().getValue();
Run Code Online (Sandbox Code Playgroud)

我使用ZonedDateTime课程的方式有问题吗?

根据文档,这应该将java.util.Date对象转换为ZonedDateTime.上面的日期格式是标准日期?

我是否必须回到Joda时间?

如果有人可以提供一些建议,那就太好了.

java datetime date java-8 java-time

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

使用Java 8 Clock对类进行单元测试

引入了Java 8 java.time.Clock,它可以用作许多其他java.time对象的参数,允许您向它们注入真实或假的时钟.例如,我知道您可以创建一个Clock.fixed()然后调用Instant.now(clock)它将返回Instant您提供的固定.这听起来非常适合单元测试!

但是,我无法弄清楚如何最好地使用它.我有一个类,类似于以下内容:

public class MyClass {
    private Clock clock = Clock.systemUTC();

    public void method1() {
        Instant now = Instant.now(clock);
        // Do something with 'now'
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,我想对这段代码进行单元测试.我需要能够设置clock生成固定时间,以便我可以method()在不同时间进行测试.显然,我可以使用反射将clock成员设置为特定值,但如果我不必诉诸于反射,那将会很好.我可以创建一个公共setClock()方法,但这感觉不对.我不想Clock在方法中添加一个参数,因为真正的代码不应该关注传入时钟.

处理此问题的最佳方法是什么?这是新代码,所以我可以重新组织这个类.

编辑:为了澄清,我需要能够构造一个MyClass对象,但能够让一个对象看到两个不同的时钟值(就好像它是一个常规的系统时钟一样).因此,我无法将固定时钟传递给构造函数.

java unit-testing java-8 java-time

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

标签 统计

java-time ×10

java ×9

java-8 ×7

date ×2

datetime ×2

converter ×1

epoch ×1

mocking ×1

sqldatetime ×1

time ×1

unit-testing ×1