来自java.util.Date 时间类(描述具体的时间点)
UTC时间 世界调整时间 1970.1.1 00:00:00
GMC时间 格林威治时间
Date中获取当前时间的方法
Date date = new Date();
System.out.println(date);
输出结果:Sat Jul 20 13:46:04 CST 2019
这种显示结果为毫秒数
long time = date.getTime();
System.out.println(time);
输出结果:1563601564013
Java.test.SimpleDateFormat
该类主要用来规范时间日期的格式
1.会写时间日期格式
yyyy = 2019
M-------------------------------- 月
d-------------------------------- 日
H-------------------------------- 时(24小时制) h(12小时制)
a-------------------------------- 上/下午
m-------------------------------- 分
s-------------------------------- 秒
E-------------------------------- 周几
2019-07-20 09:50:25
yyyy -MM-dd HH:mm:ss E
2.记住两种转换方式
日期Date转String类型
SimpleDateFormat提供一个转换方法
例子:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss E a");
Date date = new Date();
System.out.println(date);
String time = sdf.format(date);
System.out.println(time);
输出结果:Sat Jul 20 11:51:46 CST 2019
用户输入String类型转Date类型
同样是SimpleDateFormat提供一个转换方法
例子:
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss E");
String str = "2018-08-08 12:12:12 星期六";
Date d = sdf1.parse(str);
System.out.println(d);
输出结果:2019-07-20 11:51:46 星期六 上午
Java.util.Calender
日历类
用于操作时间
格里高利历法
本身是一个抽象类
常用的实现类封装了一个格里高利历法
Calendar由于不能被直接实例化,所以提供了一个静态方法getInstance(),以便于我们用来获取一个适应的实现类实例
创建一个格里高利对象
Calendar c = Calendar.getInstance();`//第一种,推荐使用这种
System.out.println(c);
Calendar c1 = new GregorianCalendar();//第二种
System.out.println(c1);
格里高利对象输出结果:java.util.GregorianCalendar[time=1563608172403,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id=“Asia/Shanghai”,offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2019,MONTH=6,WEEK_OF_YEAR=29,WEEK_OF_MONTH=3,DAY_OF_MONTH=20,DAY_OF_YEAR=201,DAY_OF_WEEK=7,DAY_OF_WEEK_IN_MONTH=3,AM_PM=1,HOUR=3,HOUR_OF_DAY=15,MINUTE=36,SECOND=12,MILLISECOND=403,ZONE_OFFSET=28800000,DST_OFFSET=0]
将当前的Calendar所表示的时间转为Date类型
Date date = c.getTime();
System.out.println(date);
long time = c.getTime().getTime();
System.out.println(time);
输出结果:Sat Jul 20 15:36:12 CST 2019
输出毫秒数
c.setTime(new Date());
自己设置Calendar里的时间
//设置年
c.set(Calendar.YEAR,2018);
//设置月(设置月时,从0开始表示一月)
c.set(Calendar.MONTH,11);
/*
* 设置日
* 和日期相关的时间分量
* DAY_OF_MONTH 月中的天
* DAY_OF_YEAR 年中的天
* DAY_OF_WEEK 周中的天
*/
c.set(Calendar.DAY_OF_MONTH,13);
//设置时
/*
* HOUR_OF_DAY 24小时制
* HOUR 12小时制
*/
c.set(Calendar.HOUR_OF_DAY,13);
//设置分
c.set(Calendar.MINUTE,12);
//设置秒
c.set(Calendar.SECOND,8);
//设置周几(减一才是实际周几,1代表周日,2代表周一,以此类推......)
c.set(Calendar.DAY_OF_WEEK,1);
然后把结果变为String类型输出
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss E");
Date date = c.getTime();
String str = sdf.format(date);
System.out.println(str);
输出结果:2018-12-09 13:12:08 星期日
获取Calendar里的时间信息
//获取年
int year = c.get(Calendar.YEAR);
System.out.println("今年是"+year+"年");
//获取月
int month = c.get(Calendar.MONTH)+1;
System.out.println("这是今年第"+month+"月");
//获取日
int d = c.get(Calendar.DAY_OF_WEEK)-1;
System.out.println("这是这周第"+d+"天");
int h = c.get(Calendar.HOUR_OF_DAY);
System.out.println("当前小时为:"+h);
int m = c.get(Calendar.MINUTE);
System.out.println("当前分钟为:"+m);
int s = c.get(Calendar.SECOND);
System.out.println("当前秒数为:"+s);
输出结果:今年是2019年
这是今年第7月
这是这周第6天
当前小时为:16
当前分钟为:24
当前秒数为:39
获取当前Calendar表示的时间中指定时间分量的最大值
Calendar c = Calendar.getInstance();
//获取这一年这中一共有多少天
int year = c.getActualMaximum(Calendar.DAY_OF_YEAR);
System.out.println(year);
//获取一个月有多少天
int mon = c.getActualMaximum(Calendar.DAY_OF_MONTH);
System.out.println(mon);
//获取一年有多少周
int i = c.getActualMaximum(Calendar.WEEK_OF_YEAR);
System.out.println(i);
输出结果:365
31
52
计算时间的方法
Calendar c = Calendar.getInstance();
//计算五个月前是哪一天
c.add(Calendar.MONTH,-5);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
String time = sdf.format(c.getTime());
System.out.println(time);
输出结果:
2019-02-20 16-25-54