gpt4 book ai didi

java - SimpleDateFormat 返回两个不同的时区

转载 作者:行者123 更新时间:2023-11-30 06:58:20 25 4
gpt4 key购买 nike

我有这两个字符串作为输入字符串

03/12/16
03/14/16

我制作了一个单个 SimpleDateFormatter 对象来获取这样的日期差异

DateFormat formatter = new SimpleDateFormat("MM/dd/yy",Locale.US);
Date dateChkIn = formatter.parse("03/12/16");
System.out.println("Checkin date at nights check - "+dateChkIn.toString());
Date dateChkOut = formatter.parse("03/14/16");
System.out.println("Checkout date at nights check - "+dateChkOut.toString());
Long numberOfNghtsCalc = ((dateChkOut.getTime() - dateChkIn.getTime()) / 86400000L);
System.out.println("number of nigts calculated - "+ numberOfNghtsCalc);

下面是我在服务器中的输出

Checkin date at nights check - Sat Mar 12 00:00:00 EST 2016
Checkout date at nights check - Mon Mar 14 00:00:00 EDT 2016
number of nigts calculated - 1

预期输出是计算的 nigts 数 - 2请注意从格式化程序返回的两个不同的时区

更新:2016 年 3 月 13 日被视为 DST 更改日期。因此我的计算出错了。 (除以 86400000L)

最佳答案

我找到了解决方案。我了解到最好的解决方案是使用 Joda Time。但是在现有代码改动最少的情况下,我认为这种棘手的方法会更好。如果您发现任何缺点,请编辑此答案。

    List<Date> dates = new ArrayList<Date>();
Calendar calendar = new GregorianCalendar();
calendar.setTime(dateChkIn);

Date result = null;
while (calendar.getTime().before(dateChkOut)){
result = calendar.getTime();


dates.add(result);
calendar.add(Calendar.DATE, 1);
}
System.out.println("DAYS CALCULATED BY NEW SOLUTION: " + dates.size());
newNumberOfNghtsCalc = (long) dates.size();
dates.clear();

这实际上减少了运行时间!

问题代码所用时间:275000(以纳秒为单位)

新解决方案花费的时间:103000

关于java - SimpleDateFormat 返回两个不同的时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32776491/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com