亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Date.plus 在 2.5.4 Groovy Runtime 中不起作用,有什么替代方法嗎?

Date.plus 在 2.5.4 Groovy Runtime 中不起作用,有什么替代方法嗎?

慕尼黑5688855 2023-09-20 15:28:39
我們想要在當前日期中添加天數并以特定方式對其進行格式化。這個問題在 Groovy 2.4.13 中得到了解決,并且以下日期操作工作正常:today = new Date()+90;today.format('yyyy-MM-dd HH:mm:ss.S');結果:2019-12-02 08:07:15.294在 Groovy 2.5.4 中,相同的表達式會拋出此異常:groovy.lang.MissingMethodException:沒有方法簽名:java.util.Date.plus() 適用于參數類型:(整數)值:[90] 可能的解決方案:parse(java.lang.String)、split(groovy. lang.Closure)、use([Ljava.lang.Object;)、is(java.lang.Object)、wait()、clone() at Script1.run(Script1.groovy:3)我能夠在線“Groovy sandboxes”中重現此行為:在這里工作正常:groovy-playground(版本 2.4.1.5)在這里失?。篻roovyconsole(版本 2.5.7)在這種情況下,可行的替代方案是什么?我讀過有關新的 Date API 的信息,但找不到有關如何使用它的詳細信息,以及日期操作(例如 + 90 天)。
查看完整描述

4 回答

?
qq_花開花謝_0

TA貢獻1835條經驗 獲得超7個贊

看看時間類別

import?groovy.time.TimeCategory
def?theDate?=?use(TimeCategory){new?Date()?+?90.days}.format('yyyy-MM-dd?HH:mm:ss.S')


查看完整回答
反對 回復 2023-09-20
?
千萬里不及你

TA貢獻1784條經驗 獲得超9個贊

以下是您如何以更 Groovy 風格編寫 Java 示例。


// you can assemble aggregate types by left shifting the aggregates

// I'm not endorsing this approach, necessarily, just pointing it out as an alternative?

ZonedDateTime now = LocalDate.now() << LocalTime.now() << ZoneId.of('Africa/Bamako')


// the plus operator is overloaded

ZonedDateTime in90Days = now + 90


// you can pass a String to format without needed a full DateTimeFormatter instance

println in90Days.format('uuuu-MM-dd HH:mm:ss.S')


查看完整回答
反對 回復 2023-09-20
?
倚天杖

TA貢獻1828條經驗 獲得超3個贊

雖然 Groovy 為舊的 JavaDate類添加了一些進一步的支持,但我仍然認為您不應該使用它。它的設計一直很糟糕,現在已經過時了。請改用現代 Java 日期和時間 API java.time。很抱歉,我必須信任您來翻譯 Java 代碼。


? ? DateTimeFormatter formatter = DateTimeFormatter.ofPattern("uuuu-MM-dd HH:mm:ss.S");

? ? ZonedDateTime now = ZonedDateTime.now(ZoneId.of("Africa/Bamako"));

? ? ZonedDateTime in90Days = now.plusDays(90);

? ? System.out.println(in90Days.format(formatter));

剛才運行時的輸出是:

2020-01-01 08:37:13.3

如果不是非洲/巴馬科,請替換您所需的時區。


查看完整回答
反對 回復 2023-09-20
?
LEATH

TA貢獻1936條經驗 獲得超7個贊

您可以使用日歷來實現這一點


    Calendar cal = new GregorianCalendar();

    cal.add(Calendar.DATE, 90);

    Date date = cal.getTime();

所有步驟必須分開,不能在一行中。


查看完整回答
反對 回復 2023-09-20
  • 4 回答
  • 0 關注
  • 228 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號