java日期中YYYY與yyyy的區別

2021-08-23 12:26:10 字數 2064 閱讀 5517

我不知道各位小夥伴有沒有在開發中使用過new ******dateformat("yyyy-mm-dd hh:mm:ss"),在使用的時候發現yyyy與yyyy的效果沒什麼區別,但是其實是有問題的!

需求:我想統計一下當前10分鐘內巡河的人員。

過程1:於是我單元測試獲取十分鐘前的時間,發現並沒有什麼問題,很開心。

@test

public void currenttime()

過程2:然後再web中寫了乙個這樣的工具方法,之後發現整個介面,一條資料都取不到。。。

public

string get_oldtime(string current_time, int i) catch (parseexception e)

}date olddate = new

date(date.gettime() - i * 60 * 1000);

string

time = new ******dateformat("yyyy-mm-dd hh:mm:ss").format(olddate);

return time;

}

過程3:於是debug,發現問題定位就在這個方法上,然後我又重返junit上。

@test

public void currenttime()

public

string get_oldtime(string current_time, int i) catch (parseexception e)

}date olddate = new

date(date.gettime() - i * 60 * 1000);

string

time = new ******dateformat("yyyy-mm-dd hh:mm:ss").format(olddate);

return time;

}

執行結果:神奇的事情出現了。。。2018-06-04 09:30:00為什變成了2023年???

過程5:但是我覺得這個規律有點問題:首先我們來看正向轉換吧,即:date->string

過程6:沒錯,正向轉換確實是復合這個規律的,但是逆向(string->date)呢?

疑問:我又不是2017-12-31 09:30:00,或者2018-12-31 09:30:00為什麼逆向轉換變成了2023年???為了驗證這個東西(排除2018-12-31不是週六的干擾),我還特地查了一下,2023年的12月31號是周6,按照上面那個結論是不是應該能逆向轉換成功?

過程7:發現結果並沒有轉成功,這說明這個結論還是有點問題的,至少在逆向轉換的時候還存在問題啊!

個人猜想:yyyy在逆向轉換的時候

1、如果去年12月31號不是週六的話:返回日期是去年年底的最後一周的第一天(即週日)的零點零分零秒。

2、如果去年12月31號是週六的話,返回的是今年第一天零點零分零秒。

3、用yyyy逆向轉換永遠得不到你想要的值。

yyyy與yyyy 日期比較問題

在2020年1月1日生成的交易日期為2019年12月31日的交易記錄檔案中,出現了很多歷史交易,例如交易時間2019年8月8日的交易資料。在2019年及2020年1月其他時間,未出現該問題。資料庫使用mysql 檢視歷史 找到生成交易記錄檔案相關的處理,會從資料庫查詢前一天的交易記錄,生成檔案。從資...

java基礎 throw與throws的區別

b throw與throws的區別 b 通過乙個例子來詳細講解 public test throws repletexception catch exception e 從上面的例子可以看出 1 throws是用來宣告乙個方法可能丟擲的所有異常資訊 狀態 throw則是指丟擲的乙個具體的異常型別 動...

java中日期時間格式與毫秒數的轉換

輸入日期轉化為毫秒數 用calendar方法 calendar.gettime calendar calendar calendar.getinstance calendar.set 2018,2,15,8,31,5 system.out.println calendar.gettimeinmill...