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

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

將一些小時/分鐘添加到當前日期時間并獲取未來的日期時間

將一些小時/分鐘添加到當前日期時間并獲取未來的日期時間

慕沐林林 2022-11-02 10:20:04
我需要獲取特定時間的未來時間戳值。我將不得不向當前日期時間時間戳添加一個字符串值并獲取未來的時間戳值。我正在獲取當前時間戳,如下所示:Timestamp timestamp = new Timestamp(System.currentTimeMillis());我有一個字符串值"02:00:00",所以基本上我需要在這個時間上加上 2 小時并獲取需要插入的未來時間戳值。例如,如果當前時間戳為:2019-04-29 16:59:21.43 且字符串為"02:00:00".我需要輸出為2019-04-29 18:59:21.43.有人可以幫忙嗎
查看完整描述

3 回答

?
泛舟湖上清波郎朗

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

你可以做這樣的事情


    Instant now = Instant.now();

    Duration diff = Duration.between(

            LocalTime.MIN,

            LocalTime.parse("02:00:00")

    );

    Instant res = now.plus(diff);


    System.out.println("res = " + Timestamp.from(res));


查看完整回答
反對 回復 2022-11-02
?
Smart貓小萌

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

您可以使用 MySQL 函數TIMESTAMP將給定的時間字符串添加到您的時間戳值:

TIMESTAMP(expr), TIMESTAMP(expr1,expr2)

使用單個參數,此函數將日期或日期時間表達式 expr 作為日期時間值返回。使用兩個參數,它將時間表達式 expr2 添加到日期或日期時間表達式 expr1 中,并將結果作為日期時間值返回。

mysql> SELECT TIMESTAMP('2003-12-31 12:00:00','12:00:00');
-> '2004-01-01 00:00:00'

參考


查看完整回答
反對 回復 2022-11-02
?
梵蒂岡之花

TA貢獻1900條經驗 獲得超5個贊

插入兩小時后的片刻。


myPreparedStatement                     // Use a `PreparedStatement` to exchange data with your database, to avoid SQL-injection risk. Use JDBC 4.2 or later for *java.time* support.

.setObject(                             // Fill a placeholder `?` in your SQL statement.

    … ,                                 // Specify which placeholder. 

    OffsetDateTime                      // Use `OffsetDateTime` to specify a moment in JDBC 4.2. Optionally, your JDBC might support `Instant` or `ZonedDateTime` types, while support for `OffsetDateTime` is required.

    .now(                               // Capture the current moment.

        ZoneOffset.UTC                  // Set the offset-from-UTC to zero. We do not need to account for any time zone in this particular business scenario.

    )                                   // Returns an `OffsetDateTime` object.

    .plus(                              // Adds a span-of-time to the moment held in the `OffsetDateTime` object.

        Duration.parse( "PT2H" )        // Specify the span-of-time using standard ISO 8601 format for a duration.

    )                                   // Per Immutable Objects pattern, returns a new `OffsetDateTime` rather than changing ("mutating") the original.

)                          

細節

我有一個字符串值為“02:00:00”,所以基本上我需要在這個時間上加上 2 小時并獲取需要插入的未來時間戳值


這是傳達與時間線無關的時間跨度的糟糕方式。


標準方式是標記開始的地方,并將年PnYnMnDTnHnMnS-月-日與小時-分鐘-秒分開。所以2小時是。PTPT2H


要解析這樣的字符串,請使用Durationclass for hours-minutes-seconds(或Periodfor years-months-days)。


String input = "PT2H" ;

Duration d = Duration.parse( input ) ;

您可以生成這樣的字符串。


String output = Duration.ofHours( 2 ).toString() ;  // Yields "PT2H" string.

以UTC捕獲當前時刻。


OffsetDateTime odt = OffsetDateTime.now( ZoneOffset.UTC ) ;

使用標準ISO 8601 符號添加兩個小時的持續時間。


Duration d = Duration.parse( "PT2H" ) ;

ZonedDateTime odtLater = odt.plus( d ) ;  // Add 2 hours to the current moment.

使用 JDBC 4.2 或更高版本將其提交到您的數據庫。


myPreparedStatement.setObject( … , odtLater ) ;

恢復。


OffsetDateTime odt = myResultSet.getObject( … , OffsetDateTime.class ) ;


查看完整回答
反對 回復 2022-11-02
  • 3 回答
  • 0 關注
  • 229 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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