目录
一、util.Date/sql.Date/sql.Timestamp
重点:
日期的获取和设置
日期的格式化(字符格式——日期格式)
日期时间之间的转换
一、util.Date/sql.Date/sql.Timestamp
import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class t12_6_2 {
/**
* 日期时间类
* Date/Timestamp的valueOf都是static方法,可以直接用方法名调用
* @throws ParseException
*/
public static void main(String[] args) throws ParseException {
Date date1=new Date();
System.out.println("当前时间:"+date1);
System.out.println("-----------------");
//获取当前时间 法一(java.sql.Date)
long times=System.currentTimeMillis();
java.sql.Date date2 = new java.sql.Date(times);
System.out.println(date2);
//获取当前时间 法二(java.util.Date+java.sql.Date)
long times2=date1.getTime();
date2 = new java.sql.Date(times2);
System.out.println(date2);
System.out.println("-----------------");
//获取当前时间(到毫秒) (java.sql.Timestamp)
Timestamp time = new Timestamp(times);
System.out.println(time);
System.out.println("-----------------");
//字符串——日期(java.sql.Date)
System.out.println("请输入出生日期");
Scanner sc=new Scanner(System.in);
//yyyy-[M]M-[D]D
String birth = sc.nextLine();//next输入到空格停止,nextLine到回车
java.sql.Date birthDate = java.sql.Date.valueOf(birth);
System.out.println(birthDate);
//日期——字符串
String s_birth = birthDate.toString();
System.out.println(s_birth);
System.out.println("-----------------");
//字符串——Timestamp
//yyyy-[M]M-[D]D HH:MM:SS[.f...]
System.out.println("请输入出生日期");
String birth3 = sc.nextLine();
Timestamp birthtime = Timestamp.valueOf(birth3);
System.out.println(birthtime);
System.out.println("-----------------");
//日期——字符串(java.util.Date)
System.out.println("请输入出生日期");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
java.util.Date date3 = new java.util.Date();
String birth2 = sc.nextLine();
//日期——字符串
String s_date3=sdf.format(date3);
//字符串——日期
Date s_birth4 = sdf.parse(birth2);
System.out.println(s_date3);
System.out.println(s_birth4);
}
}
二、Calendar类
package t12_6_3;
import java.util.Calendar;
import java.util.Date;
/**
*使用Calendar类获取指定日期,指定日期
* @author 惊蛰
*
*/
public class Test {
public static void main(String[] args) {
//创建日历对象
Calendar calendar =Calendar.getInstance();//获得单例方法
//获得日历对象的年份
int year = calendar.get(Calendar.YEAR);
System.out.println(year);
//获得日历对象的月份
int month = calendar.get(Calendar.MONTH)+1;//月份从0开始
System.out.println(month);
//获取月份中的日
int day = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println(day);
//获取当前的星期
int week = calendar.get(Calendar.DAY_OF_WEEK)+1;//星期从周日开始
System.out.println(week);
//通过calendar指定日期
calendar.set(2022, 12,12);
//calendar--date
Date date1 = calendar.getTime();
System.out.println(date1);
//date--calendar
Date date2 = new Date();
calendar.setTime(date2);
System.out.println(calendar.get(Calendar.YEAR));
System.out.println(calendar.get(Calendar.MONTH)+1);
System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
}
}
三、jdk8新增日期类
package t12_6_4;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
/**
* jdk8新增日期
* LocalDate 对象的不可变性,类比String
* @author 惊蛰
*
*/
public class Test {
public static void main(String[] args) {
//获取
LocalDate localdate = LocalDate.now();
System.out.println(localdate);
int year = localdate.getYear();
int month = localdate.getMonth().getValue();//getValue():获取int价值年月
int day = localdate.getDayOfMonth();
int weekday = localdate.getDayOfWeek().getValue();
System.out.println("年"+year);
System.out.println("月"+month);
System.out.println("日"+day);
System.out.println("星期"+weekday);
//设置
LocalDate birthday = LocalDate.of(2011, 11, 11);
System.out.println(birthday);
//转换
//字符串——LocalDate
String s1="2003-01-30";//月,日必须2位
LocalDate date1 = LocalDate.parse(s1);
System.out.println(date1);
String s2="2003/01/30";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd");
LocalDate date2 = LocalDate.parse(s2, formatter);
System.out.println(date2);
//日期运算
LocalDate birth1 = LocalDate.of(2003, 1, 30);
System.out.println("生日"+birth1);
LocalDate b1 = birth1.plusYears(1);
System.out.println("加一年"+b1);
LocalDate b2 = birth1.minusMonths(2);
System.out.println("两月前"+b2);
LocalDate b3 = birth1.plusDays(7);
System.out.println("七天后"+b3);
//比较
LocalDate date3 = LocalDate.of(2022, 1, 1);
LocalDate date4 = LocalDate.of(2022, 2, 1);
System.out.println(date4.isAfter(date3));
System.out.println(date4.isBefore(date3));
System.out.println(date4.isEqual(date3));
}
}