mirror of https://github.com/tasks/tasks
Wrap joda
parent
f82cbeee42
commit
bb5c1496ef
@ -0,0 +1,196 @@
|
||||
package org.tasks.time;
|
||||
|
||||
import android.test.AndroidTestCase;
|
||||
|
||||
import org.tasks.Freeze;
|
||||
import org.tasks.Snippet;
|
||||
|
||||
import java.util.TimeZone;
|
||||
|
||||
public class DateTimeTest extends AndroidTestCase {
|
||||
public void testGetMillisOfDay() {
|
||||
assertEquals(7248412, new DateTime(2015, 10, 6, 2, 0, 48, 412).getMillisOfDay());
|
||||
}
|
||||
|
||||
public void testWithMillisOfDay() {
|
||||
assertEquals(
|
||||
new DateTime(2015, 10, 6, 2, 0, 48, 412),
|
||||
new DateTime(2015, 10, 6, 0, 0, 0, 0).withMillisOfDay(7248412));
|
||||
}
|
||||
|
||||
public void testPlusMonths() {
|
||||
assertEquals(
|
||||
new DateTime(2015, 11, 6, 2, 0, 48, 412),
|
||||
new DateTime(2015, 10, 6, 2, 0, 48, 412).plusMonths(1));
|
||||
}
|
||||
|
||||
public void testPlusMonthsWrapYear() {
|
||||
assertEquals(
|
||||
new DateTime(2016, 1, 6, 2, 0, 48, 412),
|
||||
new DateTime(2015, 10, 6, 2, 0, 48, 412).plusMonths(3));
|
||||
}
|
||||
|
||||
public void testGetDayOfMonth() {
|
||||
assertEquals(5, new DateTime(2015, 10, 5, 0, 0, 0).getDayOfMonth());
|
||||
}
|
||||
|
||||
public void testPlusDays() {
|
||||
assertEquals(
|
||||
new DateTime(2015, 10, 6, 2, 0, 48, 412),
|
||||
new DateTime(2015, 10, 5, 2, 0, 48, 412).plusDays(1));
|
||||
}
|
||||
|
||||
public void testPlusDaysWrapMonth() {
|
||||
assertEquals(
|
||||
new DateTime(2015, 11, 1, 2, 0, 48, 412),
|
||||
new DateTime(2015, 10, 31, 2, 0, 48, 412).plusDays(1));
|
||||
}
|
||||
|
||||
public void testMinuteOfHour() {
|
||||
assertEquals(43, new DateTime(2015, 10, 5, 2, 43, 48).getMinuteOfHour());
|
||||
}
|
||||
|
||||
public void testNumberOfDaysInMonth() {
|
||||
assertEquals(31, new DateTime(2015, 1, 5, 9, 45, 34).getNumberOfDaysInMonth());
|
||||
assertEquals(28, new DateTime(2015, 2, 5, 9, 45, 34).getNumberOfDaysInMonth());
|
||||
assertEquals(31, new DateTime(2015, 3, 5, 9, 45, 34).getNumberOfDaysInMonth());
|
||||
assertEquals(30, new DateTime(2015, 4, 5, 9, 45, 34).getNumberOfDaysInMonth());
|
||||
assertEquals(31, new DateTime(2015, 5, 5, 9, 45, 34).getNumberOfDaysInMonth());
|
||||
assertEquals(30, new DateTime(2015, 6, 5, 9, 45, 34).getNumberOfDaysInMonth());
|
||||
assertEquals(31, new DateTime(2015, 7, 5, 9, 45, 34).getNumberOfDaysInMonth());
|
||||
assertEquals(31, new DateTime(2015, 8, 5, 9, 45, 34).getNumberOfDaysInMonth());
|
||||
assertEquals(30, new DateTime(2015, 9, 5, 9, 45, 34).getNumberOfDaysInMonth());
|
||||
assertEquals(31, new DateTime(2015, 10, 5, 9, 45, 34).getNumberOfDaysInMonth());
|
||||
assertEquals(30, new DateTime(2015, 11, 5, 9, 45, 34).getNumberOfDaysInMonth());
|
||||
assertEquals(31, new DateTime(2015, 12, 5, 9, 45, 34).getNumberOfDaysInMonth());
|
||||
}
|
||||
|
||||
public void testWithMillisOfSecond() {
|
||||
assertEquals(
|
||||
new DateTime(2015, 11, 6, 13, 34, 56, 453),
|
||||
new DateTime(2015, 11, 6, 13, 34, 56, 0).withMillisOfSecond(453));
|
||||
}
|
||||
|
||||
public void testWithHourOfDay() {
|
||||
assertEquals(
|
||||
new DateTime(2015, 11, 6, 23, 0, 0),
|
||||
new DateTime(2015, 11, 6, 1, 0, 0).withHourOfDay(23));
|
||||
}
|
||||
|
||||
public void testWithMinuteOfHour() {
|
||||
assertEquals(
|
||||
new DateTime(2015, 11, 6, 23, 13, 0),
|
||||
new DateTime(2015, 11, 6, 23, 1, 0).withMinuteOfHour(13));
|
||||
}
|
||||
|
||||
public void testWithSecondOfMinute() {
|
||||
assertEquals(
|
||||
new DateTime(2015, 11, 6, 23, 13, 56),
|
||||
new DateTime(2015, 11, 6, 23, 13, 1).withSecondOfMinute(56));
|
||||
}
|
||||
|
||||
public void testGetYear() {
|
||||
assertEquals(2015, new DateTime(2015, 1, 1, 1, 1, 1).getYear());
|
||||
}
|
||||
|
||||
public void testMinusMinutes() {
|
||||
assertEquals(
|
||||
new DateTime(2015, 11, 4, 23, 59, 0),
|
||||
new DateTime(2015, 11, 5, 0, 1, 0).minusMinutes(2));
|
||||
}
|
||||
|
||||
public void testIsBefore() {
|
||||
assertTrue(new DateTime(2015, 11, 4, 23, 59, 0)
|
||||
.isBefore(new DateTime(2015, 11, 4, 23, 59, 1)));
|
||||
|
||||
assertFalse(new DateTime(2015, 11, 4, 23, 59, 0)
|
||||
.isBefore(new DateTime(2015, 11, 4, 23, 59, 0)));
|
||||
}
|
||||
|
||||
public void testGetMonthOfYear() {
|
||||
assertEquals(1, new DateTime(2015, 1, 2, 3, 4, 5).getMonthOfYear());
|
||||
}
|
||||
|
||||
public void testIsAfter() {
|
||||
assertTrue(new DateTime(2015, 11, 4, 23, 59, 1)
|
||||
.isAfter(new DateTime(2015, 11, 4, 23, 59, 0)));
|
||||
|
||||
assertFalse(new DateTime(2015, 11, 4, 23, 59, 0)
|
||||
.isAfter(new DateTime(2015, 11, 4, 23, 59, 0)));
|
||||
}
|
||||
|
||||
public void testWithYear() {
|
||||
assertEquals(
|
||||
new DateTime(2016, 1, 1, 1, 1, 1),
|
||||
new DateTime(2015, 1, 1, 1, 1, 1).withYear(2016));
|
||||
}
|
||||
|
||||
public void testWithMonthOfYear() {
|
||||
assertEquals(
|
||||
new DateTime(2015, 1, 2, 3, 4, 5),
|
||||
new DateTime(2015, 2, 2, 3, 4, 5).withMonthOfYear(1));
|
||||
}
|
||||
|
||||
public void testGetHourOfDay() {
|
||||
assertEquals(3, new DateTime(2015, 1, 2, 3, 4, 5).getHourOfDay());
|
||||
}
|
||||
|
||||
public void testWithDayOfMonth() {
|
||||
assertEquals(
|
||||
new DateTime(2015, 1, 2, 3, 4, 5),
|
||||
new DateTime(2015, 1, 1, 3, 4, 5).withDayOfMonth(2));
|
||||
}
|
||||
|
||||
public void testPlusMinutes() {
|
||||
assertEquals(
|
||||
new DateTime(2015, 1, 2, 3, 4, 5),
|
||||
new DateTime(2015, 1, 2, 2, 59, 5).plusMinutes(5));
|
||||
}
|
||||
|
||||
public void testPlusHours() {
|
||||
assertEquals(
|
||||
new DateTime(2015, 1, 2, 3, 4, 5),
|
||||
new DateTime(2015, 1, 1, 3, 4, 5).plusHours(24));
|
||||
}
|
||||
|
||||
public void testPlusWeeks() {
|
||||
assertEquals(
|
||||
new DateTime(2015, 1, 2, 3, 4, 5),
|
||||
new DateTime(2014, 12, 12, 3, 4, 5).plusWeeks(3));
|
||||
}
|
||||
|
||||
public void testIsBeforeNow() {
|
||||
Freeze.freezeAt(new DateTime(2015, 10, 6, 16, 15, 27)).thawAfter(new Snippet() {{
|
||||
assertFalse(new DateTime(2015, 10, 6, 16, 15, 27).isBeforeNow());
|
||||
assertTrue(new DateTime(2015, 10, 6, 16, 15, 26).isBeforeNow());
|
||||
}});
|
||||
}
|
||||
|
||||
public void testMinusMillis() {
|
||||
assertEquals(
|
||||
new DateTime(2015, 11, 6, 16, 18, 20, 452),
|
||||
new DateTime(2015, 11, 6, 16, 18, 21, 374).minusMillis(922));
|
||||
}
|
||||
|
||||
public void testMinusDays() {
|
||||
assertEquals(
|
||||
new DateTime(2015, 11, 6, 16, 19, 16),
|
||||
new DateTime(2015, 12, 4, 16, 19, 16).minusDays(28));
|
||||
}
|
||||
|
||||
public void testGetSecondOfMinute() {
|
||||
assertEquals(32, new DateTime(2015, 11, 6, 16, 19, 32).getSecondOfMinute());
|
||||
}
|
||||
|
||||
public void testToUTC() {
|
||||
TimeZone def = TimeZone.getDefault();
|
||||
try {
|
||||
TimeZone.setDefault(TimeZone.getTimeZone("America/Chicago"));
|
||||
assertEquals(
|
||||
new DateTime(2015, 10, 6, 14, 45, 15, 0, TimeZone.getTimeZone("GMT")),
|
||||
new DateTime(2015, 10, 6, 9, 45, 15).toUTC());
|
||||
} finally {
|
||||
TimeZone.setDefault(def);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,192 @@
|
||||
package org.tasks.time;
|
||||
|
||||
import org.joda.time.DateTimeZone;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.TimeZone;
|
||||
|
||||
public class DateTime {
|
||||
|
||||
private final org.joda.time.DateTime dateTime;
|
||||
|
||||
public DateTime(int year, int month, int day, int hour, int minute, int second) {
|
||||
this(year, month, day, hour, minute, second, 0);
|
||||
}
|
||||
|
||||
public DateTime(int year, int month, int day, int hour, int minute, int second, int millisecond) {
|
||||
this(year, month, day, hour, minute, second, millisecond, TimeZone.getDefault());
|
||||
}
|
||||
|
||||
public DateTime(int year, int month, int day, int hour, int minute, int second, int millisecond, TimeZone timeZone) {
|
||||
this(new org.joda.time.DateTime(year, month, day, hour, minute, second, millisecond, DateTimeZone.forTimeZone(timeZone)));
|
||||
}
|
||||
|
||||
public static DateTime now() {
|
||||
return new DateTime();
|
||||
}
|
||||
|
||||
public DateTime() {
|
||||
this(DateTimeUtils.currentTimeMillis());
|
||||
}
|
||||
|
||||
public DateTime(org.joda.time.DateTime dateTime) {
|
||||
this.dateTime = dateTime;
|
||||
}
|
||||
|
||||
public DateTime(long timestamp) {
|
||||
this(timestamp, TimeZone.getDefault());
|
||||
}
|
||||
|
||||
public DateTime(long timestamp, TimeZone timeZone) {
|
||||
dateTime = new org.joda.time.DateTime(timestamp, DateTimeZone.forTimeZone(timeZone));
|
||||
}
|
||||
|
||||
public DateTime(Date d) {
|
||||
dateTime = new org.joda.time.DateTime(d, DateTimeZone.forTimeZone(TimeZone.getDefault()));
|
||||
}
|
||||
|
||||
public DateTime withMillisOfDay(int millisOfDay) {
|
||||
return new DateTime(dateTime.withMillisOfDay(millisOfDay));
|
||||
}
|
||||
|
||||
public long getMillis() {
|
||||
return dateTime.getMillis();
|
||||
}
|
||||
|
||||
public DateTime plusMonths(int interval) {
|
||||
return new DateTime(dateTime.plusMonths(interval));
|
||||
}
|
||||
|
||||
public int getDayOfMonth() {
|
||||
return dateTime.getDayOfMonth();
|
||||
}
|
||||
|
||||
public DateTime plusDays(int interval) {
|
||||
return new DateTime(dateTime.plusDays(interval));
|
||||
}
|
||||
|
||||
public int getMinuteOfHour() {
|
||||
return dateTime.getMinuteOfHour();
|
||||
}
|
||||
|
||||
public String toString(String format) {
|
||||
return dateTime.toString(format);
|
||||
}
|
||||
|
||||
public Date toDate() {
|
||||
return dateTime.toDate();
|
||||
}
|
||||
|
||||
public int getNumberOfDaysInMonth() {
|
||||
return dateTime.dayOfMonth().getMaximumValue();
|
||||
}
|
||||
|
||||
public DateTime withMillisOfSecond(int millisOfSecond) {
|
||||
return new DateTime(dateTime.withMillisOfSecond(millisOfSecond));
|
||||
}
|
||||
|
||||
public DateTime withHourOfDay(int hourOfDay) {
|
||||
return new DateTime(dateTime.withHourOfDay(hourOfDay));
|
||||
}
|
||||
|
||||
public DateTime withMinuteOfHour(int minuteOfHour) {
|
||||
return new DateTime(dateTime.withMinuteOfHour(minuteOfHour));
|
||||
}
|
||||
|
||||
public DateTime withSecondOfMinute(int secondOfMinute) {
|
||||
return new DateTime(dateTime.withSecondOfMinute(secondOfMinute));
|
||||
}
|
||||
|
||||
public int getYear() {
|
||||
return dateTime.getYear();
|
||||
}
|
||||
|
||||
public DateTime minusMinutes(int minutes) {
|
||||
return new DateTime(dateTime.minusMinutes(minutes));
|
||||
}
|
||||
|
||||
public boolean isBefore(DateTime dateTime) {
|
||||
return this.dateTime.isBefore(dateTime.dateTime);
|
||||
}
|
||||
|
||||
public int getMillisOfDay() {
|
||||
return dateTime.getMillisOfDay();
|
||||
}
|
||||
|
||||
public int getMonthOfYear() {
|
||||
return dateTime.getMonthOfYear();
|
||||
}
|
||||
|
||||
public boolean isAfter(DateTime dateTime) {
|
||||
return this.dateTime.isAfter(dateTime.dateTime);
|
||||
}
|
||||
|
||||
public DateTime withYear(int year) {
|
||||
return new DateTime(dateTime.withYear(year));
|
||||
}
|
||||
|
||||
public DateTime withMonthOfYear(int monthOfYear) {
|
||||
return new DateTime(dateTime.withMonthOfYear(monthOfYear));
|
||||
}
|
||||
|
||||
public int getHourOfDay() {
|
||||
return dateTime.getHourOfDay();
|
||||
}
|
||||
|
||||
public DateTime withDayOfMonth(int dayOfMonth) {
|
||||
return new DateTime(dateTime.withDayOfMonth(dayOfMonth));
|
||||
}
|
||||
|
||||
public DateTime plusMinutes(int minutes) {
|
||||
return new DateTime(dateTime.plusMinutes(minutes));
|
||||
}
|
||||
|
||||
public DateTime plusHours(int hours) {
|
||||
return new DateTime(dateTime.plusHours(hours));
|
||||
}
|
||||
|
||||
public DateTime plusWeeks(int weeks) {
|
||||
return new DateTime(dateTime.plusWeeks(weeks));
|
||||
}
|
||||
|
||||
public boolean isBeforeNow() {
|
||||
return dateTime.isBefore(DateTimeUtils.currentTimeMillis());
|
||||
}
|
||||
|
||||
public DateTime minusMillis(int millis) {
|
||||
return new DateTime(dateTime.minusMillis(millis));
|
||||
}
|
||||
|
||||
public DateTime minusDays(int days) {
|
||||
return new DateTime(dateTime.minusDays(days));
|
||||
}
|
||||
|
||||
public DateTime toUTC() {
|
||||
return new DateTime(dateTime.toDateTime(DateTimeZone.UTC));
|
||||
}
|
||||
|
||||
public int getSecondOfMinute() {
|
||||
return dateTime.getSecondOfMinute();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
|
||||
DateTime dateTime1 = (DateTime) o;
|
||||
|
||||
return !(dateTime != null ? !dateTime.equals(dateTime1.dateTime) : dateTime1.dateTime != null);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return dateTime != null ? dateTime.hashCode() : 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return dateTime.toString();
|
||||
}
|
||||
}
|
@ -0,0 +1,19 @@
|
||||
package org.tasks.time;
|
||||
|
||||
public class DateTimeUtils {
|
||||
|
||||
private static final SystemMillisProvider SYSTEM_MILLIS_PROVIDER = new SystemMillisProvider();
|
||||
private static volatile MillisProvider MILLIS_PROVIDER = SYSTEM_MILLIS_PROVIDER;
|
||||
|
||||
public static long currentTimeMillis() {
|
||||
return MILLIS_PROVIDER.getMillis();
|
||||
}
|
||||
|
||||
public static void setCurrentMillisFixed(long millis) {
|
||||
MILLIS_PROVIDER = new FixedMillisProvider(millis);
|
||||
}
|
||||
|
||||
public static void setCurrentMillisSystem() {
|
||||
MILLIS_PROVIDER = SYSTEM_MILLIS_PROVIDER;
|
||||
}
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
package org.tasks.time;
|
||||
|
||||
public class FixedMillisProvider implements MillisProvider {
|
||||
|
||||
private long millis;
|
||||
|
||||
public FixedMillisProvider(long millis) {
|
||||
this.millis = millis;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getMillis() {
|
||||
return millis;
|
||||
}
|
||||
}
|
@ -0,0 +1,5 @@
|
||||
package org.tasks.time;
|
||||
|
||||
public interface MillisProvider {
|
||||
long getMillis();
|
||||
}
|
@ -0,0 +1,8 @@
|
||||
package org.tasks.time;
|
||||
|
||||
public class SystemMillisProvider implements MillisProvider {
|
||||
@Override
|
||||
public long getMillis() {
|
||||
return System.currentTimeMillis();
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue