📄 testtimeutil.java
字号:
package jodd.datetime;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Random;
import junit.framework.TestCase;
public class TestTimeUtil extends TestCase {
public void testFromJulian() {
DateTimeStamp time;
time = TimeUtil.fromJulianDate(0.0);
assertEquals("-4712-1-1 12:0:0.0", time.toString());
time = TimeUtil.fromJulianDate(59.0);
assertEquals("-4712-2-29 12:0:0.0", time.toString());
time = TimeUtil.fromJulianDate(366.0);
assertEquals("-4711-1-1 12:0:0.0", time.toString());
time = TimeUtil.fromJulianDate(731.0);
assertEquals("-4710-1-1 12:0:0.0", time.toString());
time = TimeUtil.fromJulianDate(1721058.0);
assertEquals("0-1-1 12:0:0.0", time.toString());
time = TimeUtil.fromJulianDate(1721057.0);
assertEquals("-1-12-31 12:0:0.0", time.toString());
time = TimeUtil.fromJulianDate(1721117.0);
assertEquals("0-2-29 12:0:0.0", time.toString());
time = TimeUtil.fromJulianDate(1721118.0);
assertEquals("0-3-1 12:0:0.0", time.toString());
time = TimeUtil.fromJulianDate(1721423.0);
assertEquals("0-12-31 12:0:0.0", time.toString());
time = TimeUtil.fromJulianDate(1721424.0);
assertEquals("1-1-1 12:0:0.0", time.toString());
time = TimeUtil.fromJulianDate(2440587.5);
assertEquals("1970-1-1 0:0:0.0", time.toString());
time = TimeUtil.fromJulianDate(2451774.726007);
assertEquals("2000-8-18 5:25:27.004", time.toString());
time = TimeUtil.fromJulianDate(2451774.72600701);
assertEquals("2000-8-18 5:25:27.005", time.toString());
time = TimeUtil.fromJulianDate(2451774.72600702);
assertEquals("2000-8-18 5:25:27.006", time.toString());
time = TimeUtil.fromJulianDate(2299160.49998901);
assertEquals("1582-10-4 23:59:59.05", time.toString());
time = TimeUtil.fromJulianDate(2299160.5);
assertEquals("1582-10-15 0:0:0.0", time.toString());
time = TimeUtil.fromJulianDate(2147438064.499989);
assertEquals("5874773-8-15 23:59:59.052", time.toString());
}
public void testFix() {
DateTimeStamp t = new DateTimeStamp();
t.year = 2003;
t.month = 7;
t.day = 26;
t.hour = 0;
t.minute = 0;
t.second = 2;
double jd = TimeUtil.toJulianDate(t).doubleValue();
DateTimeStamp t2 = TimeUtil.fromJulianDate(jd);
assertFalse(t.toString().equals(t2.toString()));
JulianDateStamp jds = TimeUtil.toJulianDate(t);
t2 = TimeUtil.fromJulianDate(jds);
assertEquals(t.toString(), t2.toString());
}
public void testMonteCarlo() {
Random r = new Random();
for (int i = 0; i < 5000000; i++) {
double jd = r.nextFloat() * 3e6;
DateTimeStamp t = TimeUtil.fromJulianDate(jd);
double jd2 = TimeUtil.toJulianDate(t).doubleValue();
assertEquals(jd, jd2, 0.000000001);
}
}
public void testDates() {
DateTimeStamp t = new DateTimeStamp();
GregorianCalendar gc = new GregorianCalendar();
for (int y = 1970; y < 2100; y++) {
gc.set(y, 00, 01);
t.year = y;
for (int i = 0; i < 365; i++) {
t.month = gc.get(Calendar.MONTH) + 1;
t.day = gc.get(Calendar.DAY_OF_MONTH);
t.hour = t.minute = 0; t.second = 0.0;
double jd = TimeUtil.toJulianDate(t).doubleValue();
DateTimeStamp t2 = TimeUtil.fromJulianDate(jd);
assertEquals(t.toString(), t2.toString());
gc.add(Calendar.DAY_OF_YEAR, 1);
}
}
}
public void testTimes() {
DateTimeStamp t = new DateTimeStamp();
GregorianCalendar gc = new GregorianCalendar();
t.year = gc.get(Calendar.YEAR);
gc.set(t.year, gc.get(Calendar.MONTH), gc.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
for (int day = 0; day < 1; day++) {
t.month = gc.get(Calendar.MONTH) + 1;
t.day = gc.get(Calendar.DAY_OF_MONTH);
for (int i = 0; i < 86400; i++) {
t.hour = gc.get(Calendar.HOUR_OF_DAY);
t.minute = gc.get(Calendar.MINUTE);
t.second = gc.get(Calendar.SECOND);
JulianDateStamp jds = TimeUtil.toJulianDate(t);
DateTimeStamp t2 = TimeUtil.fromJulianDate(jds);
assertEquals(t.toString(), t2.toString());
gc.add(Calendar.SECOND, 1);
}
gc.add(Calendar.DAY_OF_YEAR, 1);
}
}
public void testDayOfYear() {
int doy = TimeUtil.dayOfYear(2003, 01, 01);
assertEquals(1, doy);
doy = TimeUtil.dayOfYear(2003, 02, 01);
assertEquals(32, doy);
doy = TimeUtil.dayOfYear(2003, 12, 31);
assertEquals(365, doy);
doy = TimeUtil.dayOfYear(2004, 12, 31);
assertEquals(366, doy);
doy = TimeUtil.dayOfYear(2000, 12, 31);
assertEquals(366, doy);
}
public void testSetAccumulation() {
DateTimeStamp gts1 = new DateTimeStamp(2003, 11, 24, 21, 40, 38.173);
DateTimeStamp gts2 = new DateTimeStamp(2003, 11, 24, 21, 40, 38.173);
assertEquals(0, gts1.compareTo(gts2));
assertEquals(0, gts2.compareTo(gts1));
for (int i = 0; i < 100; i++) {
JulianDateStamp jds = TimeUtil.toJulianDate(gts2);
gts2 = TimeUtil.fromJulianDate(jds);
}
assertEquals(0, gts1.compareTo(gts2));
assertEquals(0, gts2.compareTo(gts1));
}
public void testSetDateAccumulation() {
DateTimeStamp gts1 = new DateTimeStamp(2003, 11, 24, 21, 40, 38.173);
DateTimeStamp gts2 = new DateTimeStamp(2003, 11, 24, 21, 40, 38.173);
assertEquals(0, gts1.compareTo(gts2));
assertEquals(0, gts2.compareTo(gts1));
for (int i = 0; i < 100; i++) {
JulianDateStamp jds = TimeUtil.toJulianDate(2003, 11, 24, gts2.hour, gts2.minute, gts2.second);
gts2 = TimeUtil.fromJulianDate(jds);
}
assertEquals(0, gts1.compareTo(gts2));
assertEquals(0, gts2.compareTo(gts1));
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -