我正在嘗試編寫一個簡單的實用程序方法,用於將某天添加到喬達時間instant。這是我的第一個刺。將某天添加到JodaTime即時
/**
* Adds a number of days specified to the instant in time specified.
*
* @param instant - the date to be added to
* @param numberOfDaysToAdd - the number of days to be added to the instant specified
* @return an instant that has been incremented by the number of days specified
*/
public static Instant addNumberOfDaysToInstant(final Instant instant, final int numberOfDaysToAdd) {
Days days = Days.days(numberOfDaysToAdd);
Interval interval = new Interval(instant, days);
return interval.getEnd().toInstant();
}
也能正常工作在大多數情況下,當你考慮例如,當加入的天數將跨越的BST/GMT邊界以外。這是一個小例子。
public class DateAddTest {
/** * 區使用的輸入和輸出 */ 私有靜態最後DateTimeZone ZONE = DateTimeZone.forId( 「歐洲/倫敦」);
/**
* Formatter used to translate Instant objects to & from strings.
*/
private static final DateTimeFormatter FORMATTER = DateTimeFormat.forPattern(DATE_FORMAT).withZone(ZONE);
/**
* Date format to be used
*/
private static final String DATE_FORMAT = "dd/MM/yyyy";
public static void main(String[] args) {
DateTime dateTime = FORMATTER.parseDateTime("24/10/2009");
Instant toAdd = dateTime.toInstant();
Instant answer = JodaTimeUtils.addNumberOfDaysToInstant(toAdd, 2);
System.out.println(answer.toString(FORMATTER)); //25/10/2009
}
}
我覺得這個問題是因爲該區間沒有考慮到acount的事實,它已經越過邊界BST。任何更好的方法來實現這個想法將不勝感激。
什麼時區你期待從即時參數創建?它會一致嗎?這個計算沒有意義,因爲你無法利用Jon提出的原始修正。 – laz 2009-06-29 17:01:02