下面列出了org.joda.time.DurationFieldType#days ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
public static DurationFieldType getDurationFieldType(OrgInterval.Unit unit) {
switch (unit) {
case HOUR:
return DurationFieldType.hours();
case DAY:
return DurationFieldType.days();
case WEEK:
return DurationFieldType.weeks();
case MONTH:
return DurationFieldType.months();
case YEAR:
return DurationFieldType.years();
default:
throw new IllegalArgumentException("Unknown unit " + unit);
}
}
private void testAdd(String start, DurationFieldType type, int amt, String end) {
DateTime dtStart = new DateTime(start, GJChronology.getInstance(DateTimeZone.UTC));
DateTime dtEnd = new DateTime(end, GJChronology.getInstance(DateTimeZone.UTC));
assertEquals(dtEnd, dtStart.withFieldAdded(type, amt));
assertEquals(dtStart, dtEnd.withFieldAdded(type, -amt));
DurationField field = type.getField(GJChronology.getInstance(DateTimeZone.UTC));
int diff = field.getDifference(dtEnd.getMillis(), dtStart.getMillis());
assertEquals(amt, diff);
if (type == DurationFieldType.years() ||
type == DurationFieldType.months() ||
type == DurationFieldType.days()) {
YearMonthDay ymdStart = new YearMonthDay(start, GJChronology.getInstance(DateTimeZone.UTC));
YearMonthDay ymdEnd = new YearMonthDay(end, GJChronology.getInstance(DateTimeZone.UTC));
assertEquals(ymdEnd, ymdStart.withFieldAdded(type, amt));
assertEquals(ymdStart, ymdEnd.withFieldAdded(type, -amt));
}
}
private void testAdd(String start, DurationFieldType type, int amt, String end) {
DateTime dtStart = new DateTime(start, ISOChronology.getInstanceUTC());
DateTime dtEnd = new DateTime(end, ISOChronology.getInstanceUTC());
assertEquals(dtEnd, dtStart.withFieldAdded(type, amt));
assertEquals(dtStart, dtEnd.withFieldAdded(type, -amt));
DurationField field = type.getField(ISOChronology.getInstanceUTC());
int diff = field.getDifference(dtEnd.getMillis(), dtStart.getMillis());
assertEquals(amt, diff);
if (type == DurationFieldType.years() ||
type == DurationFieldType.months() ||
type == DurationFieldType.days()) {
YearMonthDay ymdStart = new YearMonthDay(start, ISOChronology.getInstanceUTC());
YearMonthDay ymdEnd = new YearMonthDay(end, ISOChronology.getInstanceUTC());
assertEquals(ymdEnd, ymdStart.withFieldAdded(type, amt));
assertEquals(ymdStart, ymdEnd.withFieldAdded(type, -amt));
}
}
private void testAdd(String start, DurationFieldType type, int amt, String end) {
DateTime dtStart = new DateTime(start, GJChronology.getInstance(DateTimeZone.UTC));
DateTime dtEnd = new DateTime(end, GJChronology.getInstance(DateTimeZone.UTC));
assertEquals(dtEnd, dtStart.withFieldAdded(type, amt));
assertEquals(dtStart, dtEnd.withFieldAdded(type, -amt));
DurationField field = type.getField(GJChronology.getInstance(DateTimeZone.UTC));
int diff = field.getDifference(dtEnd.getMillis(), dtStart.getMillis());
assertEquals(amt, diff);
if (type == DurationFieldType.years() ||
type == DurationFieldType.months() ||
type == DurationFieldType.days()) {
YearMonthDay ymdStart = new YearMonthDay(start, GJChronology.getInstance(DateTimeZone.UTC));
YearMonthDay ymdEnd = new YearMonthDay(end, GJChronology.getInstance(DateTimeZone.UTC));
assertEquals(ymdEnd, ymdStart.withFieldAdded(type, amt));
assertEquals(ymdStart, ymdEnd.withFieldAdded(type, -amt));
}
}
private void testAdd(String start, DurationFieldType type, int amt, String end) {
DateTime dtStart = new DateTime(start, ISOChronology.getInstanceUTC());
DateTime dtEnd = new DateTime(end, ISOChronology.getInstanceUTC());
assertEquals(dtEnd, dtStart.withFieldAdded(type, amt));
assertEquals(dtStart, dtEnd.withFieldAdded(type, -amt));
DurationField field = type.getField(ISOChronology.getInstanceUTC());
int diff = field.getDifference(dtEnd.getMillis(), dtStart.getMillis());
assertEquals(amt, diff);
if (type == DurationFieldType.years() ||
type == DurationFieldType.months() ||
type == DurationFieldType.days()) {
YearMonthDay ymdStart = new YearMonthDay(start, ISOChronology.getInstanceUTC());
YearMonthDay ymdEnd = new YearMonthDay(end, ISOChronology.getInstanceUTC());
assertEquals(ymdEnd, ymdStart.withFieldAdded(type, amt));
assertEquals(ymdStart, ymdEnd.withFieldAdded(type, -amt));
}
}
/**
* Creates a Joda duration/period object
*
* @param date object that represents the duration of the period through milisseconds
*/
private void initializeDuration(Date date) {
// Get duration from Date
mDuration = new Duration(date.getTime());
// Get period
final DurationFieldType[] durationFields = new DurationFieldType[]{DurationFieldType.weeks(), DurationFieldType.days(), DurationFieldType.hours(), DurationFieldType.minutes()};
mPeriod = mDuration.toPeriod(PeriodType.forFields(durationFields)).normalizedStandard();
updatePeriod();
}
@Override
public DurationFieldType getDurationType() {
return DurationFieldType.days();
}