package com.gongxy.demo;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
* Date 时间类
* Calendar 时间操作类
* SimpleDateFormat 时间格式化类
*/
public class DateTest {
public static void main(String[] args) {
simpleDateFormat();
}
/**
* compareTo[比较当调用此方法的Date对象和指定日期。两者相等时候返回0。调用对象在指定日期之前则返回负数。调用对象在指定日期之后则返回正数。]
* equals[当调用此方法的Date对象和指定日期相等时候返回true,否则返回false。]
* toString[把此 Date 对象转换为以下形式的 String: dow mon dd hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat)。]
*/
static void dateTest(){
Date d = new Date();
System.out.println(d);//国际时间格式 [Tue Aug 11 22:31:14 CST 2020]
Date d1 = new Date(1000);
int result = d.compareTo(d1);
System.out.println(result);//[1]
boolean bResult = d.equals(d1);
System.out.println(bResult);//false
Date dNow = new Date();
result = d.compareTo(dNow);
System.out.println(result);//生成时间的误差,会导致dNow晚于d一点时间[-1]
bResult = d.equals(dNow);
System.out.println(bResult);//false
Date d2 = d;
result = d.compareTo(d2);
System.out.println(result);//[0]
bResult = d.equals(d2);
System.out.println(bResult);//true
int hashCode = d.hashCode();
System.out.println(hashCode);//-570822014
System.out.println(d.toString());//[Tue Aug 11 22:45:18 CST 2020]
}
/**
* Calendar
* getTime() 当前时间
* get() 取
* set() 设置
* add() 运算
*/
static void calendarTest(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar cal = Calendar.getInstance();
//cal.getTime() Date[返回当前时间]
System.out.println(sdf.format(cal.getTime()));//2020-08-12 23:38:26
//取值
int r1 = cal.get(Calendar.YEAR);//2020 [年]
r1 = cal.get(Calendar.MONTH);//7 [获取的月份需要+1 (0,1,2,3,4,5,6,7,8,9,10,11)]
r1 = cal.get(Calendar.DATE);//12 [日]
r1 = cal.get(Calendar.HOUR);//11 [时(12小时制)]
r1 = cal.get(Calendar.HOUR_OF_DAY);//23 [时(24小时制)]
r1 = cal.get(Calendar.MINUTE);//18 [分]
r1 = cal.get(Calendar.SECOND);//20 [秒]
r1 = cal.get(Calendar.DAY_OF_WEEK);//4 [1周日 2周一 3周二 4周三 5周四 6周五 7周六]
//设置值
cal.set(2019, 6, 19, 14, 23, 59);
System.out.println(sdf.format(cal.getTime()));//2019-07-19 14:23:59
cal.set(Calendar.YEAR, 2018);//2018年
cal.set(Calendar.MONTH, 0);//0 [一月]
cal.set(Calendar.DATE, 1);//1号
cal.set(Calendar.HOUR_OF_DAY, 14);//14时
cal.set(Calendar.MINUTE, 12);//12分
cal.set(Calendar.SECOND, 12);//12秒
System.out.println(sdf.format(cal.getTime()));//2018-01-01 14:12:12
//运算值
cal.add(Calendar.YEAR, -1);
cal.add(Calendar.MONTH, -1);
cal.add(Calendar.DATE, 1);
cal.add(Calendar.HOUR_OF_DAY, 1);
cal.add(Calendar.MINUTE, 10);
cal.add(Calendar.SECOND, 10);
System.out.println(sdf.format(cal.getTime()));//2016-12-02 15:22:22
}
/**
* SimpleDateFormat函数语法:
* G 年代标志符
* y 年
* M 月
* d 日
* h 时 在上午或下午 (1~12)
* H 时 在一天中 (0~23)
* m 分
* s 秒
* S 毫秒
* E 星期
* D 一年中的第几天
* F 一月中第几个星期几
* w 一年中第几个星期
* W 一月中第几个星期
* a 上午 / 下午 标记符
* k 时 在一天中 (1~24)
* K 时 在上午或下午 (0~11)
* z 时区
*/
static void simpleDateFormat(){
//String strDateFormat = "yyyy-MM-dd HH:mm:ss E";
String strDateFormat = "yyyy-MM-dd HH:mm:ss";
SimpleDateFormat sdf = new SimpleDateFormat(strDateFormat);
Date d = new Date();
System.out.println(sdf.format(d));//2020-08-12 23:51:57 星期三
String studyD = "2020-08-14 22:55:23";
try {
Date dStudy = sdf.parse(studyD);
System.out.println(dStudy);//Fri Aug 14 22:55:23 CST 2020
} catch (ParseException e) {
e.printStackTrace();
}
}
}