标签: java-time

导入java.time.LocalDate失败

import java.time.LocalDate;
import java.time.Period;

    public class DateDiff {

        public static void main(String[] args) {
            /** The date at the end of the last century */
            LocalDate endofCentury = LocalDate.of(2000, 12, 31);
            LocalDate now = LocalDate.now();

            Period diff = Period.between(endofCentury, now);

            System.out.printf("The 21st century (up to %s) is %s old%n", now, diff);
            System.out.printf("The 21st century is %d years, %d months and %d days old",
                    diff.getYears(), diff.getMonths(), diff.getDays());
        }
    }
Run Code Online (Sandbox Code Playgroud)

没有找到本地日期我错过了一个import指令

java date java-time

0
推荐指数
1
解决办法
5080
查看次数

从SimpleTimeZone获取ZoneId

使用Java我有一个SimpleTimeZone具有GMT偏移和来自遗留系统的夏令时信息的实例.

我想检索ZoneId能够使用Java 8时间API.

实际上,toZoneId返回ZoneId没有夏令时的信息

SimpleTimeZone stz = new SimpleTimeZone( 2 * 60 * 60 * 1000, "GMT", Calendar.JANUARY,1,1,1, Calendar.FEBRUARY,1,1,1, 1 * 60 * 60 * 1000);
stz.toZoneId();
Run Code Online (Sandbox Code Playgroud)

java timezone dst java-time

0
推荐指数
1
解决办法
781
查看次数

将TAI时间转换为Java Instant

我可以通过秒和纳秒来访问TAI时间 - 让我称之为T.

我想现在创建一个Instant与此值对应的java 类T.

我已经找到了合适的构造函数来做到这一点,但没有运气.

java time constructor java-time tai-time

0
推荐指数
1
解决办法
274
查看次数

Java:如何检查给定时间是否介于两次之间?

我想检查目标时间是否在两个给定时间之间,而不考虑使用Java8时间的日期.假设开始时间是"21:30",结束时间是"06:30",目标时间是"03:00",所以程序应该返回true.

    @Test
    public void posteNuit()
    {
        DateTimeFormatter format = DateTimeFormatter.ofPattern("HH:mm");

        String s = "21:30";
        String e = "06:30";

        String t = "03:00";

        LocalTime startTime = LocalTime.parse(s, format);
        LocalTime endTime = LocalTime.parse(e, format);
        LocalTime targetTime = LocalTime.parse(t, format);

        if ( targetTime.isBefore(endTime) && targetTime.isAfter(startTime) ) {
            System.out.println("Yes! night shift.");
        } else {
            System.out.println("Not! night shift.");
        }
    }
Run Code Online (Sandbox Code Playgroud)

java time java-8 java-time

0
推荐指数
1
解决办法
1305
查看次数

Java以十进制年数表示的时间段

如果我计算2的区别LocalDate在的java.time使用:

Period p = Period.between(testDate, today);
Run Code Online (Sandbox Code Playgroud)

然后我得到一个年,月,天数的输出,如:

Days = 9
Months = 6
Years = 18
Run Code Online (Sandbox Code Playgroud)

有没有人知道一种干净的方式来表示作为十进制类型的值(即上面会是什么18.5...)?

java date period java-time

0
推荐指数
2
解决办法
2239
查看次数

如何将一个持续时间除以另一个?

给定两个java.time.Duration实例,如何计算一个持续时间适合另一个持续时间的整数次?

使用它似乎很明显,first.toNanos() / second.toNanos()但这种方法的Javadoc引入了一个小问题:

如果此持续时间太大而无法适应长纳秒,则抛出异常.

我们如何计算这个划分而没有溢出的风险?

更新:我正在实现令牌桶算法.为此,我需要知道自上次检查以来已经过了多少"句点",以便使用额外的令牌填充存储桶.我不能简单地降低纳秒精度,因为速率可以用纳秒来指定.

java duration division java-time

0
推荐指数
1
解决办法
1074
查看次数

解析时间来获得差异

我试图简化我的生活解析日志和收集时间.我得到一个带有日志语句的文件,这些日志语句都以这种格式的时间戳开头

16:08:39.660
Run Code Online (Sandbox Code Playgroud)

我想把这个字符串变成一个简单的时间,我可以在几秒或几毫秒内得到两者之间的差异.我一直在这里看,有人建议使用

SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss.sss");
Date start = format.parse(startTimeString);
Date end = format.parse(endTimeString);

long difference = end.getTime() - start.getTime();
Run Code Online (Sandbox Code Playgroud)

然而,这给了我完全不同的时代.例如,16:08:39.660给了我4:19.因为时间错了,它给了我负面的差异,这在我给定的背景下是不可能的.我该怎么转

16:08:39.660
16:08:52.452
Run Code Online (Sandbox Code Playgroud)

成了差异12.792?

java time datetime parsing java-time

0
推荐指数
1
解决办法
84
查看次数

final static LocalDateTime retrieving from another class is throwing java.lang.ExceptionInInitializerError

I have a variable MINDATE in MyConstants file. You can see the declaration below.

public static final LocalDateTime MINDATE =  LocalDateTime.of(LocalDate.of(2011, 1, 1), LocalTime.MIDNIGHT);
Run Code Online (Sandbox Code Playgroud)

I am consuming this variable in another class just by using MyConstants.MINDATE then I get the following exception

Exception in thread "main" java.lang.ExceptionInInitializerError
    at com.cw.na.vos.DateTest.main(DateTest.java:14)
Caused by: java.lang.IllegalArgumentException: Unknown pattern letter: T
    at java.time.format.DateTimeFormatterBuilder.parsePattern(Unknown Source)
    at java.time.format.DateTimeFormatterBuilder.appendPattern(Unknown Source)
    at java.time.format.DateTimeFormatter.ofPattern(Unknown Source)
    at com.cw.na.vos.MyConstants.<clinit>(MyConstants.java:228)
    ... 1 more
Run Code Online (Sandbox Code Playgroud)

I am unable to understand the reason behind it.

public …
Run Code Online (Sandbox Code Playgroud)

java datetime exception java-time localdate

0
推荐指数
1
解决办法
274
查看次数

字符串到OffsetDateTime在java中解析

我正在尝试解析日期字符串,OffsetDateTime如下所示.

但我得到以下异常,

线程"main"中的异常java.time.format.DateTimeParseException:无法在索引0处解析文本'Mon Jun 18 00:00:00 IST 2012'

public class ParseExample {
    public static void main(String... args) throws ParseException {
        String dateStr = "Mon Jun 18 00:00:00 IST 2012";
        System.out.println(OffsetDateTime.parse(dateStr));
    }
}
Run Code Online (Sandbox Code Playgroud)

有人可以帮我解决这个错误.

谢谢.

java datetime date java-time

0
推荐指数
1
解决办法
911
查看次数

Java Instant的错误?`DateTimeException:Year的值无效

根据Instant的文档,最小的瞬间是-1000000000-01-01T00:00Z,所以年份-1000000000和时区是UTC.所以我希望这个程序能够工作,并且atOffset是一个noop:

import java.time.*;

public class A {
   public static void main(String[] args) {
      Instant i = Instant.MIN;
      System.out.println(i);
      System.out.println(i.atOffset(ZoneOffset.UTC));
   }
}
Run Code Online (Sandbox Code Playgroud)

但相反,它会抛出此异常atOffset:

-1000000000-01-01T00:00:00Z
Exception in thread "main" java.time.DateTimeException: Invalid value for Year (valid values -999999999 - 999999999): -1000000000
        at java.time.temporal.ValueRange.checkValidIntValue(ValueRange.java:330)
        at java.time.temporal.ChronoField.checkValidIntValue(ChronoField.java:722)
        at java.time.LocalDate.ofEpochDay(LocalDate.java:341)
        at java.time.LocalDateTime.ofEpochSecond(LocalDateTime.java:422)
        at java.time.OffsetDateTime.ofInstant(OffsetDateTime.java:328)
        at java.time.Instant.atOffset(Instant.java:1195)
        at A.main(A.java:7)
Run Code Online (Sandbox Code Playgroud)

那是一个错误吗?根据该验证的消息,最低年份是-999999999文件所说的-1000000000.

java java-time

0
推荐指数
1
解决办法
276
查看次数