日期與時間
阿新 • • 發佈:2022-04-10
Date
java.util.Date類表示時間,JDK1.1之後推薦使用 java.util.Calendar類;
java.util.Date類中很多構造方法和方法已經過時(Deprecated),不推薦使用,
|
Calendar
JDK1.1版本開始,增加Calendar類,建議使用Calendar類代替Date類;
Calendar是抽象類,不能直接使用new建立物件;
|
SimpleDateFormat中定義了對時間進行格式化的方法;該類繼承了抽象父類DateFormat,某些方法在父類中定義,查閱API文件時注意;
private static void dateToString() { Calendar calendar = Calendar.getInstance();//獲取日曆物件 calendar.set(Calendar.MONTH, 11); Date date = calendar.getTime();//將日曆物件用getTime方法轉換成Date物件 //自定義格式 //String pattern="yyyy年MM月dd日 HH時mm分ss秒"; String pattern = "yy-M-d H:m:s"; //構造方法傳入格式引數 SimpleDateFormat sdf = new SimpleDateFormat(pattern); String format = sdf.format(date);//使用format格式化 System.out.println(format); //System.out.println(sdf.format(cal.getTime()));//簡寫 } /*22-12-9 20:4:5*/
yyyy:年 MM:月 dd:日 hh:1~12小時制(1-12) HH:24小時制(0-23) mm:分 ss:秒 S:毫秒 E:星期幾 D:一年中的第幾天 F:一月中的第幾個星期(會把這個月總共過的天數除以7) w:一年中的第幾個星期 W:一月中的第幾星期(會根據實際情況來算) a:上下午標識 k:和HH差不多,表示一天24小時制(1-24)。 K:和hh差不多,表示一天12小時制(0-11)。 z:表示時區 |
2、解析時間字串
在實際程式設計中,往往一些時間內容都是通過使用者輸入獲得,得到的是字串,需要解析成日期時間型別進行處理;
SimpleDateFormat類不僅能夠格式化時間,還能解析時間字串;
public static void stringToDate() {
SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 HH時mm分ss秒SSS毫秒");
String strDate = "2001年2月2日 12時20分30秒300毫秒";
try {
//parse把字串轉為日期Date型別物件,如果格式不匹配丟擲轉換異常
System.out.println(sdf.parse(strDate));
//把時間戳儲存在資料庫中
} catch (ParseException e) {
e.printStackTrace();
}
}
/*Fri Feb 02 12:20:30 CST 2001
981087630300*/
import java.time.LocalDate;
public class LocalDateTest {
public static void main(String[] args) {
System.out.println("-----獲取LocalDate物件-----");
//now() 獲取當前日期的LocalDate物件
LocalDate now=LocalDate.now();
System.out.println(now);
//of() 使用年月日數值生成LocalDate物件
LocalDate localDate=LocalDate.of(2001,2,2);
System.out.println(localDate);
System.out.println("----------get-----------");
System.out.println(localDate.getDayOfMonth());
System.out.println(localDate.getDayOfWeek());
System.out.println(localDate.getDayOfYear());
System.out.println(now.getMonthValue());
System.out.println(now.getMonth());
System.out.println("----------parse--------");
//parse將字串轉換成LocalDate物件
String strLocalDate="2001-02-02";
LocalDate myLocalDate=LocalDate.parse(strLocalDate);
System.out.println(myLocalDate);
}
}
4、LocalTime
LocalDate類只表示日期,JDK8中定義了新類LocalTime用來表示時間
import java.time.LocalTime;
import java.time.temporal.ChronoField;
/**
* ChronoField是java8提供的一個列舉類
* 裡面定義了很多表示日曆的欄位
* 提供基於欄位的訪問來操縱日期,時間或日期時間,
* 通過實現TemporalField來擴充套件標準欄位集
*/
public class LocalTimeTest {
public static void main(String[] args) {
System.out.println("---獲取LocalTime物件---");
//now() 用當前日期生成LocalTime
LocalTime now = LocalTime.now();
System.out.println(now);
//of() 使用指定數字生成LocalTime
LocalTime of = LocalTime.of(11, 2, 35, 231);
System.out.println(of);
System.out.println("------返回各欄位值------");
System.out.println(now.getHour());
System.out.println(now.getMinute());
System.out.println(now.getSecond());
System.out.println(now.get(ChronoField.HOUR_OF_DAY));//在標準的24小時數字時鐘上觀察到的小時
System.out.println(now.get(ChronoField.MINUTE_OF_HOUR));
System.out.println(now.get(ChronoField.SECOND_OF_MINUTE));
System.out.println("----------parse--------");
//parse,引數格式 HH:mm:ss 將字串轉換成LocalTime物件
LocalTime parseLocalTime = LocalTime.parse("12:02:38");
System.out.println(parseLocalTime);
}
}
5、LocalDateTime
LocalDateTime類,同時包含日期與時間
import java.time.LocalDateTime;
public class LocalDateTimeTest {
public static void main(String[] args) {
System.out.println("---獲取LocalDateTime物件---");
//now() 當前日期
LocalDateTime now=LocalDateTime.now();
System.out.println(now);
//of() 指定數字 年月日時分秒
LocalDateTime of=LocalDateTime.of(2001,4,25,14,23,45);
System.out.println(of);
System.out.println(now.getDayOfMonth());
System.out.println(now.getHour());
//parse預設格式:yyyy-MM-ddTHH:mm:ss
LocalDateTime parse=LocalDateTime.parse("2001-02-02T12:34:23");
System.out.println(parse);
}
}
6、DateTimeFormatter
對於格式化及解析
//ofPattern靜態方法獲取DateTimeFormatter物件
DateTimeFormatter dtf=DateTimeFormatter.ofPattern("yyyy年MM月dd日HH時mm分ss秒");
//獲取localDateTime物件
LocalDateTime now=LocalDateTime.now();
//LocalDate now =LocalDate.now();//只表示日期沒有時間,不匹配
//把LocalDateTime LocalDate LocalTime 按照指定格式轉換成字串
//DateTimeFormatter格式要與format引數一致
String format=dtf.format(now);
System.out.println(format);
/*2022年04月10日15時42分52秒*/
7、LocalDate、LocalTime、LocalDateTime
- 使用DateTimeFormatter物件進行格式化
- 使用DateTimeFormatter物件把字串按照指定的格式轉換成時間日期型別物件
-
String pattern1="yyyy/MM/dd"; DateTimeFormatter dtf1=DateTimeFormatter.ofPattern(pattern1); TemporalAccessor parse = LocalDate.parse("2001/02/02",dtf1); System.out.println(parse); String pattern2="yyyy/MM/dd HH:mm:ss"; DateTimeFormatter dtf2 = DateTimeFormatter.ofPattern(pattern2); LocalDateTime localDateTime=LocalDateTime.parse("2002/04/02 14:23:34",dtf2); System.out.println(localDateTime); String pattern3="HH:mm:ss"; DateTimeFormatter dtf3 = DateTimeFormatter.ofPattern(pattern3); LocalTime localTime=LocalTime.parse("14:23:34",dtf3); System.out.println(localTime);