我很難與包含Calendar.add()
和Calendar.add()
的問題纏繞在一起,我需要進行完整性檢查。使用java日曆減去1天時得到錯誤的日期
我的集成測試今天開始在我正在進行的項目上失敗。我認爲這與我通過減去x天數來計算日期的方法有關。
由於某些原因,當我從今天(2017年1月2日星期一)減去1天后,我得到2016-01-01的結果?我期望2017-01-01?
我嘗試了其他日期,它似乎工作正常,但似乎當它是一天的任何一年的星期一第2年它減去1年太多,而不是一天?
我在某些情況下誤解了一些基本的東西減去天數?
...
// fails. Result is 2010-01-01??
SimpleDateFormat format = new SimpleDateFormat("YYYY-MM-dd");
Calendar now = Calendar.getInstance();
now.set(2011, 0, 2);
now.add(Calendar.DATE, -1);
assertEquals("2011-01-01", format.format(now.getTime()));
...
// fails. Result is 2016-01-01??
SimpleDateFormat format = new SimpleDateFormat("YYYY-MM-dd");
Calendar now = Calendar.getInstance();
now.set(2017, 0, 2);
now.add(Calendar.DATE, -1);
assertEquals("2017-01-01", format.format(now.getTime()));
...
// works fine.
SimpleDateFormat format = new SimpleDateFormat("YYYY-MM-dd");
Calendar now = Calendar.getInstance();
now.set(2017, 0, 5);
now.add(Calendar.DATE, -1);
assertEquals("2017-01-04", format.format(now.getTime()));
...
// works fine.
SimpleDateFormat format = new SimpleDateFormat("YYYY-MM-dd");
Calendar now = Calendar.getInstance();
now.set(2016, 0, 2);
now.add(Calendar.DATE, -1);
assertEquals("2015-01-01", format.format(now.getTime()));
...
替換'和'yyyy' YYYY'!閱讀['SimpleDateFormat'](http://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html)的javadoc,*請!!! * – Andreas
Omg ...我知道這是蹩腳的..這就是爲什麼我需要一個健全的檢查。其中一個util類是今天重構的,格式字符串被複制粘貼並從網頁中搜索並替換(https://www.w3.org/TR/NOTE-datetime)。哈哈,我會接受所有喜歡簡單事物的快樂。謝謝! –
不知道爲什麼它被downvoted,除了你的代碼不能完全運行。捕捉足夠詳細的測試來檢測它。 – Gene