java.util.Date類
package com.wkcto.chapter04.datetime;
import java.util.Date;
/**
* 演示Date類
* @author 蛙課網
*
*/
public class Test01 {
public static void main(String[] args) {
//1) 無參構造 , 返回當前日期
Date date = new Date();
System.out.println( date );
//2) 通過構造方法指定一個從 1970-1-1 00:00:00 經過的毫秒數
long millis = System.currentTimeMillis(); //返回當前日期從 1970-1-1 00:00:00 經過的毫秒數
System.out.println( millis );
Date date2 = new Date(millis);
System.out.println( date2 );
date2 = new Date(millis + 1000*62);
System.out.println( date2 );
//
System.out.println( date.after(date2)); //false
System.out.println( date.getTime() ); //返回日期距離1970-1-1 00:00:00 經過的毫秒數
}
}
java.text.SimpleDateFormat 類
package com.wkcto.chapter04.datetime;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* Date與字符串之間的相互轉換
* @author 蛙課網
*
*/
public class Test02 {
public static void main(String[] args) throws ParseException {
// 1) 創建Date對象 , 返回當前日期
Date date = new Date();
System.out.println(date); //Thu Aug 09 16:18:48 CST 2018
//2) 把Date轉換為指定格式的字符串
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss SSS");
System.out.println( sdf.format(date) ); //2018年08月09日 16:21:46 295
//3)把日期字符串轉換為Date對象
String text = "2088-08-08 10:11:12";
//注意: 格式串一定要完全匹配日期字符串
sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
date = sdf.parse(text) ; //把文本按指定的格式轉換為字符串
System.out.println( date );
}
}
java.util.Calendar類
package com.wkcto.chapter04.datetime;
import java.util.Calendar;
import java.util.Date;
/**
* 演示Calendar類
* @author 蛙課網
*
*/
public class Test03 {
public static void main(String[] args) {
//1) 獲取當前日歷
Calendar rightNow = Calendar.getInstance();
System.out.println( rightNow );
//java.util.GregorianCalendar[time=1533803370426,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2018,MONTH=7,WEEK_OF_YEAR=32,WEEK_OF_MONTH=2,DAY_OF_MONTH=9,DAY_OF_YEAR=221,DAY_OF_WEEK=5,DAY_OF_WEEK_IN_MONTH=2,AM_PM=1,HOUR=4,HOUR_OF_DAY=16,MINUTE=29,SECOND=30,MILLISECOND=426,ZONE_OFFSET=28800000,DST_OFFSET=0]
//2) 獲得日歷各個字段值
System.out.println( rightNow.get(Calendar.YEAR));
//注意 , Calendar.MONTH 字段的值是從0開始的
System.out.println( rightNow.get(Calendar.MONTH)); //7 , 代表8月
System.out.println( rightNow.get(Calendar.DAY_OF_MONTH));
System.out.println( rightNow.get(Calendar.HOUR_OF_DAY));
System.out.println( rightNow.get(Calendar.MINUTE));
System.out.println( rightNow.get(Calendar.SECOND));
//3)修改日歷各個字段的值, 使用set()設置字段值時, 可能會影響到相鄰字段的值
rightNow.set(Calendar.DAY_OF_MONTH, 40);
System.out.println( rightNow.get(Calendar.DAY_OF_MONTH)); //9
System.out.println( rightNow.get(Calendar.MONTH)); //8
//4)
Date date = rightNow.getTime(); //返回日歷對應的Date日期
System.out.println( date );
long mills = rightNow.getTimeInMillis(); //返回日歷對應的毫秒數
System.out.println( mills );
}
}
java.time包中的日期類
java.time包中的日期類是線程安全的
package com.wkcto.chapter04.datetime;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;
/**
* LocalDateTime類
* @author 蛙課網
*
*/
public class Test04 {
public static void main(String[] args) {
LocalDate date = LocalDate.now() ;
System.out.println( date );
LocalTime time = LocalTime.now();
System.out.println( time);
LocalDateTime dateTime = LocalDateTime.now();
System.out.println( dateTime ); //2018-08-09T16:58:16.003
//對日期格式化
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss");
//LocalDateTime有一個實例方法format對日期格式化
System.out.println( dateTime.format(formatter));
//把字符串轉換為日期
String text = "2088年08月08日 10:11:12";
//LocalDateTime有一個靜態方法parse()可以把字符串轉換為日期
dateTime = LocalDateTime.parse(text, formatter);
System.out.println( dateTime );
}
}