我需要計算90天,120天和160天的幾個項目。我將如何編碼? 我一直在查找java代碼,但是當我爲android開發時會引發錯誤。如何從今天的日期減去x天的天數
我需要採取今天的日期,減去x的天數,並讓它的結果顯示在屏幕上沒有別的。由於
我需要計算90天,120天和160天的幾個項目。我將如何編碼? 我一直在查找java代碼,但是當我爲android開發時會引發錯誤。如何從今天的日期減去x天的天數
我需要採取今天的日期,減去x的天數,並讓它的結果顯示在屏幕上沒有別的。由於
您應該使用Calendar
類:
//Calendar set to the current date
Calendar calendar=Calendar.getInstance();
//rollback 90 days
calendar.add(Calendar.DAY_OF_YEAR, -90);
//now the date is 90 days back
Log.i("MyApp","90 days ago:"+calendar.getTime().toString());
roll()正在添加到字段中,而不是減量。但這是不正確的,因爲它不會改變更大的領域。請參閱http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Calendar.html – nagylzs 2012-11-08 12:38:06
你是對的。謝謝。將更新我的答案 – 2012-11-08 13:31:08
使用日曆對象...
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE, -90); //etc
您應該能夠使用Calendar
類來實現你想要什麼:http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Calendar.html。
然後,您可以使用當前日期.add(Calendar.DAY_OF_YEAR, -90);
等調用您的日曆對象。
LocalDate.now(ZoneId.of("America/Montreal"))
.minusDays(90)
其他的答案在這裏已經過時。現代的方式是使用java.time類。
LocalDate
的LocalDate
類表示沒有時間一天和不同時區的日期,唯一的價值。
時區對確定日期至關重要。對於任何特定的時刻,日期因地區而異。例如,Paris France午夜後幾分鐘是新的一天,而在Montréal Québec仍然是「昨天」。
ZoneId z = ZoneId.of("America/Montreal") ;
LocalDate today = LocalDate.now(z) ;
然後,您可以添加或減去天數。
LocalDate ago090 = today.minusDays(90) ;
LocalDate ago120 = today.minusDays(120) ;
LocalDate ago160 = today.minusDays(160) ;
要產生YYYY-MM-DD的標準ISO 8601格式的字符串,調用toString
。對於其他格式,請在DateTimeFormatter
類中搜索Stack Overflow以查看許多示例和討論。
String output = ago120.toString() ;
的java.time框架是建立在Java 8和更高版本。這些類取代了日期時間類legacy,如java.util.Date
,Calendar
,& SimpleDateFormat
。
Joda-Time項目現在位於maintenance mode,建議遷移到java.time。請參閱Oracle Tutorial。並搜索堆棧溢出了很多例子和解釋。規格是JSR 310。
從何處獲取java.time類?
的ThreeTen-Extra項目與其他類擴展java.time。這個項目是未來可能增加java.time的一個試驗場。您可以在這裏找到一些有用的類,如Interval
,YearWeek
,YearQuarter
和more。
你能更具體地瞭解產生它們的錯誤和代碼嗎? – ObscureRobot 2012-01-04 14:22:19
[如何從使用Java日曆的日期中減去X天?](http://stackoverflow.com/questions/212321/how-to-subtract-x-days-from-a-date-using-java -calendar) – 2015-05-27 07:08:00