时间处理相关类
https://www.bilibili.com/video/BV1bW411o7TJ?p=9
1970年1月1日00:00:00为基准时间,度量单位为毫秒
long now = System.currentTimeMillis();
public class Demo00 {
public static void main(String[] args) {
Date d = new Date(2000);
System.out.println(d.getTime()); // 2000
Date d2 = new Date();
System.out.println(d2.getTime()); // 当前电脑的时刻 1590648121187
System.out.println(d2.after(d)); // true
Date d3 = new Date(2020,2,10);
System.out.println(d3); // Wed Mar 10 00:00:00 PST 3920
// year - 1900; mon:0-11
}
}
遇到日期处理,使用calendar
DateFormat class
时间对象转化为指定格式的字符串,以及把指定格式的字符串转换为时间对象
DateFormat 是一个抽象类,一般使用他的子类SimpleDateFormat类来实现
package com.commonclass.timeclass;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
// 测试时间对象和字符串对象之间的互相转换
// dateformat抽象类和simpledateformate实现类的使用
public class Demo01 {
public static void main(String[] args) throws ParseException {
// 把时间对象按照"格式字符串指定的格式"转为相应的字符串
// 需要定义格式
DateFormat df = new SimpleDateFormat("yyyy年MM-dd hh:mm:ss");
String str = df.format(new Date(40000000));
System.out.println(str); // 1970年01-01 03:06:40
// 把字符串按照"格式字符串指定的格式"专程相应的时间对象
DateFormat df2 = new SimpleDateFormat("yyyy年MM月dd日 hh时mm分ss秒");
Date date = df2.parse("2020年05月28日 11时30分00秒");
System.out.println(date); // Thu May 28 11:30:00 PDT 2020
// 测试其他的格式字符
DateFormat df3 = new SimpleDateFormat("D");
String str3 = df3.format(new Date());
System.out.println(str3); // 149 是今年的第149天
}
}
calendar日历类
抽象类,提供日期计算的相关功能
注意月份的表示:0 - 11
日期的获取与设置
package com.commonclass.timeclass;
import java.util.Calendar;
import java.util.GregorianCalendar;
// test calendar
public class Demo02 {
public static void main(String[] args) {
// 创建日期类
Calendar calendar = new GregorianCalendar(2999,10,9,22,10,50);
// 获得日期的相关元素 get方法
int day = calendar.get(Calendar.DATE);
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH);
int weekday = calendar.get(Calendar.DAY_OF_WEEK);
System.out.println(year); // 2999
System.out.println(month); // 10 - November
System.out.println(weekday); // 7 [1(sunday)-7[saturday]]
System.out.println(day); // 9
// 设置日期的相关元素
Calendar c2 = new GregorianCalendar(); // 不设置参数,c2为当前日期
c2.set(Calendar.YEAR,8012);
System.out.println(c2);
}
}
日期的计算
package com.commonclass.timeclass;
import java.text.DateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
// 日期的计算
public class Demo03 {
public static void main(String[] args) {
// 计算
Calendar c = new GregorianCalendar();
c.add(Calendar.DATE,100); // 日期往后一百天
System.out.println(c); // YEAR=2020,MONTH=8,WEEK_OF_YEAR=36
// 日期对象和时间对象的转化
Date d = c.getTime(); // 日期对象转为时间对象
Calendar c1 = new GregorianCalendar();
c1.setTime(new Date()); // 时间对象转为日期类
System.out.println(d); // Sat Sep 05 11:56:45 PDT 2020
printCalendar(c1); // 2020年5月28日 0时7分5秒 周4
}
public static void printCalendar(Calendar c){
// print yyyy年MM月dd日 hh时mm分ss秒 周几
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH)+1;
int date = c.get(Calendar.DAY_OF_MONTH);
int weekday = c.get(Calendar.DAY_OF_WEEK)-1;
String weekday2 = weekday == 0 ? "日" : weekday + "";
int hour = c.get(Calendar.HOUR);
int minute = c.get(Calendar.MINUTE);
int second = c.get(Calendar.SECOND);
System.out.println(year+"年"+month+"月"+date+"日 "+hour+"时"
+minute+"分"+second+"秒 "+ "周"+weekday2);
}
}
可视化日历程序
package com.commonclass.timeclass;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Scanner;
// 可视化日历程序
public class Demo04 {
public static void main(String[] args) throws ParseException {
System.out.println("please enter date(format:2020-4-5)");
Scanner scanner = new Scanner(System.in);
String str = scanner.nextLine();
// String str = "2028-9-10";
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Date date = df.parse(str); // 字符串转为时间对象
Calendar c = new GregorianCalendar(); // 日期类
c.setTime(date); // 时间对象转为日期对象
int day = c.get(Calendar.DAY_OF_MONTH); // 获取day
int maxday = c.getActualMaximum(Calendar.DATE); // 获取每月最大天数
System.out.println("s\tm\tt\tw\tth\tf\tsa");
c.set(Calendar.DAY_OF_MONTH,1);
for(int i =0;i<c.get(Calendar.DAY_OF_WEEK)-1;i++){
System.out.print("\t"); // 将第一天的日期和周对齐
}
for(int i = 1;i<=maxday;i++){
if (day == c.get(Calendar.DAY_OF_MONTH)){
System.out.print(c.get(Calendar.DAY_OF_MONTH)+"*\t");
}else{ System.out.print(c.get(Calendar.DAY_OF_MONTH)+"\t");}
if(c.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY){
System.out.println(); // 换行
}
c.add(Calendar.DAY_OF_MONTH,1);
}
}
}