JAVA8DateTime API

    最近在項目的業務中有統計模塊,統計內容爲指定月份天天的數據/指定Year每個月的數據,在篩選時候須要指定開始結束時間,還須要計算指定月份有多少天,使用java.util.Calendar進行計算,java.util.Date的不少方法早就Deprecated了,因此使用了Calendar,可是在使用過程當中發現編碼量較大,考慮到好多架構中使用Joda-Time因此準備對其進行簡單調研,可是同時JAVA8中添加的DataTime的新API,因此也進行了簡單的調研,我的仍是偏向於JDK提供的方法,因此若是真的在項目中引用,可能仍是會考慮使用JAVA8提供的API,如下爲一些簡單的測試代碼:html

    代碼包括獲取當前時間,格式化,YMDHms的增減,以及java.util.Date/java.util.Calendar/java.time.LocalDateTime之間的轉換,不過有點遺憾的是在ORM框架中還暫時沒法直接使用新的API,可是能夠經過自定義的字段來定義。
java

    Joda-Time簡述:Joda-Time簡介git

    Joda-Time Github:Joda-Time Github
github

    JAVA8-Docs:JAVA8 Docs
api

// basic getter
	@Test
	public void localDateTime() {
		LocalDateTime ldt = LocalDateTime.now();
		log.info(ldt.getMonthValue() + "");
		log.info(ldt.getDayOfYear() + "");
		log.info(ldt.getDayOfWeek().getValue() + "");
	}

	// basic use
	@Test
	public void localDateTimeFmt() {
		// get instance of now
		LocalDateTime ldt = LocalDateTime.now();
		// get instance by specified field
		// LocalDateTime java.time.LocalDateTime.of(int year, int month, int dayOfMonth, int hour, int minute, int second, int nanoOfSecond)
		ldt = LocalDateTime.of(1991, 2, 11, 5, 11, 5, 11);
		// format date with standart pattern
		log.info(DateTimeFormatter.ISO_LOCAL_DATE_TIME.format(ldt));
		// format date whih specified pattern
		log.info(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(ldt));
		// get month value
		log.info(ldt.getMonthValue() + "");
		// get DayOfYear value
		log.info(ldt.getDayOfYear() + "");
		// get DayOfWeek value
		log.info(ldt.getDayOfWeek().getValue() + "");
		// get MaxOfMonth
		log.info(ldt.range(ChronoField.DAY_OF_MONTH).getMaximum() + "");
		// adjust time with TemporalAdjusters
		log.info(TemporalAdjusters.lastDayOfMonth().adjustInto(ldt).toString());
	}

	// transfer LocalDateTime to java.util.Date
	@Test
	public void transferDate2LocalDateTime() {
		Date date = new Date();
		LocalDateTime ldt = LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
		log.info(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(ldt));
	}

	// transfer LocalDateTime to java.util.Date
	@Test
	public void transferLocalDateTime2Date() {
		LocalDateTime ldt = LocalDateTime.now();
		Date date = Date.from(ldt.atZone(ZoneId.systemDefault()).toInstant());
		log.info(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date));
	}

	// LocalDateTime from Calendar
	@Test
	public void calendar() {
		Calendar calendar = Calendar.getInstance();
		calendar.set(Calendar.YEAR, 1991);
		calendar.set(Calendar.MONTH, Calendar.MAY);
		calendar.set(Calendar.DAY_OF_MONTH, 11);
		LocalDateTime ldt =LocalDateTime.ofInstant(calendar.toInstant(), ZoneId.systemDefault());
		log.info(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(ldt));
	}
相關文章
相關標籤/搜索