【问题标题】:groovy date plus giving wrong dates常规日期加上错误的日期
【发布时间】:2018-04-21 21:32:29
【问题描述】:

我正在尝试生成一个随机日期,然后添加 5 天。它在大多数情况下都可以正常工作,但是当新日期进入明年时,结果实际上会回到同年年初。不知道为什么..这是我的代码

Date today = new Date();
def endRange = 1500
def randomInterval = new Random().nextInt(endRange)
startDate = today.plus(randomInterval)
endDate= startDate.plus(5)

我循环运行了 1000 次,其中 18 次要么重置回同一年,要么增加一年。不知道为什么。下面是两个示例输出结果

startdate         enddate
2022-12-27   -- > 2022-01-01
2020-12-26  -- >  2021-12-31

感谢您对此的任何帮助

//更新

经过一番挖掘,这发生在我将日期格式更改为“YYYY-MM-dd”之后,然后再写入 excel,因为这是我需要的格式。并且在添加 5 天后滚动到明年的任何日期都会发生这种情况。

Date today = new Date();
def minStart = today+5 //diff_currentDt_startDt
def endRange = 1500
def randomInterval = new Random().nextInt(endRange)
startDate = today.plus(randomInterval)
endDate= startDate.plus(diff_startDt_endDt)
// after this I format them and then write to excel
def startDate1=startDate.format('YYYY-MM-dd')
def endDate1=endDate.format('YYYY-MM-dd')
Label label1= new Label(0, i, startDate1)
sheet.addCell(label1)
Label label2= new Label(1, i, endDate1);
sheet.addCell(label2);

再次进一步检查,不知何故格式搞砸了。以下是格式化前后的日期

Tue Dec 24 19:31:02 EST 2019  //startdate
2019-12-24  // startdate in YYYY-MM-dd format
Sun Dec 29 19:31:02 EST 2019  // enddate (startdate +5)
2020-12-29 // enddate in YYYY-MM-dd format

我做错了什么?

【问题讨论】:

  • 每次 startDate 为 27/12/.. 或更大时都会发生这种情况吗?我已经运行了您的 1000 测试几次,但没有复制您的结果,您的基本日期设置是什么?
  • 错误是随机的,还是可以复制?如果您可以复制它,那么请将代码添加到问题中,以显示实际问题。
  • 首先回答你的两个问题,经过一番挖掘之后,我在写入 excel 之前使用 ".format('YYYY-MM-dd') 格式化日期之后发生这种情况,因为那是我的格式需要它。更新主要问题。

标签: groovy time dateadd


【解决方案1】:

看起来 .format('YYYY-MM-dd') 中的“YYYY”在 .format('yyyy-MM-dd') 中将其更改为“yyyy”后导致问题已修复

【讨论】:

猜你喜欢
  • 2013-11-30
  • 2011-03-28
  • 2011-03-02
  • 1970-01-01
  • 1970-01-01
  • 2012-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多