jav常用类-时间处理相关类
时间处理相关类
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()); // 2000Date d2 = new Date();System.out.println(d2.getTime()); // 当前电脑的时刻 1590648121187System.out.println(d2.after(d)); // trueDate 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); // 2999System.out.println(month); // 10 - NovemberSystem.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 2020printCalendar(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); // 获取dayint 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);}}
}