目录
7.1 Date
获取当前时间,精确到毫秒,弊端:无法设置时间
注意:
使用java.util.Date包
不要写成data
Date中大部分方法被废弃,建议使用Calendar类
import java.util.Date;
public static void main(String[] args) {
Date d1 = new Date();
System.out.println(d1);//Thu Jul 28 14:40:21 CST 2022
}
7.2 Calendar
日历类,得到日历类对象,不能使用new,只有一个对象。
使用getInstance()获取当前时间,获取的结果为Calendar类型
Calendar calendar = Calendar.getInstance();
System.out.println(calendar);
//java.util.GregorianCalendar[time=1658990621571,areFieldsSet=true,areAllFieldsSet=true,
// lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,
// dstSavings=0,useDaylight=false,transitions=29,lastRule=null],firstDayOfWeek=1,
// minimalDaysInFirstWeek=1,ERA=1,YEAR=2022,MONTH=6,WEEK_OF_YEAR=31,WEEK_OF_MONTH=5,
// DAY_OF_MONTH=28,DAY_OF_YEAR=209,DAY_OF_WEEK=5,DAY_OF_WEEK_IN_MONTH=4,AM_PM=1,HOUR=2,
// HOUR_OF_DAY=14,MINUTE=43,SECOND=41,MILLISECOND=571,ZONE_OFFSET=28800000,DST_OFFSET=0]
get() 获取想要的信息
Calendar calendar = Calendar.getInstance(); System.out.println(calendar.get(Calendar.WEEK_OF_YEAR));//31 返回这个月有多少天 System.out.println(calendar.get(Calendar.YEAR));//2022 返回当前年份 System.out.println(calendar.get(Calendar.MONDAY));//6 返回当前月份在数组中的索引值0-11,例如7月他就返回6
set() 设置时间信息,我们可以查看源码来确定参数
Calendar calendar = Calendar.getInstance(); //设置月份 calendar.set(calendar.YEAR,10); //设置年月日 calendar.set(2019,5,20);
Date转Calendar
setTIme方法
Date date = new Date();
Calendar calendar = Calendar.getInstance();
//date 转换为Calendar
calendar.setTime(date);
Calendar转Date
getTime方法
Calendar calendar = Calendar.getInstance();
//获取当前时间,转换为Date
System.out.println(calendar.getTime());
设置毫秒值
//返回1970-1-1 到calendar时间的毫秒值
System.out.println(calendar.getTimeInMillis());
重点
日历类常用来计算
例如:计算近三个月内的消费记录。那么三个月前的日期怎么获得
Calendar calendar = Calendar.getInstance();
//获取当前时间,转换为Date
System.out.println(calendar.getTime());
//三个月前的今天
calendar.add(Calendar.MONTH,-3);
System.out.println(calendar.getTime());
//Thu Jul 28 15:14:06 CST 2022
//Thu Apr 28 15:14:06 CST 2022
7.3 SimpleDateFormat
简单的日期格式化,将date转换为字符串。
一般我们获取的时间格式不是我们想要的,因此我们可以使用该对象格式化日期。
Date date = new Date();
//日期格式 年-月-日 时:分:秒.毫秒
SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
System.out.println(simpleDateFormat1.format(date));//2022-07-28 15:24:06.649
7.4 System
该类为系统类,我们可以使用系统类方法的到时间
//获取系统时间 System.currentTimeMillis(); //退出JVM,一般用于客户端开发 System.exit();
日期操作
-
以格式“2017/08/07 12:00:01 上午” 显示当前时间;
-
输入日期,格式为“2017/08/07 08:12”,输出该日期后的10天是什么时间
1.
import java.text.SimpleDateFormat;
import java.util.Date;
public class HomeWork3 {
public static void main(String[] args) {
Date date = new Date();
//2017/08/07 12:00:01 上午
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss a" );
String s = simpleDateFormat.format(date);
System.out.println(s);
}
}
2.
Scanner sc = new Scanner(System.in);
System.out.println("请输入日期,格式为 2022-10-10 15:10");
String a = sc.nextLine();
//创建日期格式
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm");
//将输入的日期格式化 使用parse将字符串转为Date
Date time = format.parse(a);
//System.out.println(time);
//创建日历对象来计算
Calendar instance = Calendar.getInstance();
//将Date格式转为日历对象,然后计算10天后
instance.setTime(time);
instance.add(Calendar.DATE,10);
//将计算后的日历对象进行格式化,格式化时要转为Date类,用字符串接收
String s = format.format(instance.getTime());
System.out.println(s);