⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testtimeutil.java

📁 Jodd是一个开源的公用Java基础类库
💻 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 + -