我不知道各位小夥伴有沒有在開發中使用過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...