- java.lang.System类
System类提供的public static long currentTimeMillis()用来返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。
此方法适于计算时间差。
public class Test {
public static void main(String[] args) {
System.out.println(System.currentTimeMillis());
}
}
- java.util.Date类
表示特定的瞬间,精确到毫秒
构造器:
- Date():使用无参构造器创建的对象可以获取本地当前时间。
- Date(long date)
常用方法:
- getTime():返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象
表示的毫秒数。 - toString():把此 Date 对象转换为以下形式的 String: dow mon dd
hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天 (Sun, Mon, Tue,
Wed, Thu, Fri, Sat),zzz是时间标准。
其它很多方法都过时了。
public static void test2(){
//构造器一 date() 创建了一个对应当前时间的Date()对象
Date date1=new Date();
System.out.println(date1.toString());//Fri Feb 21 22:59:14 CST 2020
System.out.println(date1.getTime());
//构造器二 创建指定毫秒数的date对象
Date date2 = new Date(1582298162369L);
System.out.println(date2.toString());
//在用Date设置一个时间是会发生偏移量 并且它的月份是从0开始的
Date date1=new Date(2020,9,8);//Fri Oct 08 00:00:00 CST 3920
//所以要想获得真确时间必须在年份上减去一个1900并在月份上减去1
Date date1=new Date(2020-1900,9-1,8);//当然这个方法也早已经过时
System.out.println(date1);
}
- java.sql.Date类
对应着数据库中的日期类型的变量
//创建java.sql.date对象
java.sql.Date date3 = new java.sql.Date(1582298478304L);
System.out.println(date3);//只显示年月日
//如何将java.util.Date对象转换为sql.Date对象
//情况一 :强转
Date date4=new java.sql.Date(1582299029103L);
java.sql.Date date5=(java.sql.Date)date4;
//情况二
Date date6=new Date();
java.sql.Date date7=new java.sql.Date(date6.getTime());
- java.text.SimpleDateFormat类
Date类的API不易于国际化,大部分被废弃了,java.text.SimpleDateFormat
类是一个不与语言环境有关的方式来格式化和解析日期的具体类。
它允许进行格式化:日期----->文本、解析:文本----->日期
格式化:
- SimpleDateFormat() :默认的模式和语言环境创建对象
- public SimpleDateFormat(String pattern):该构造方法可以用参数pattern
指定的格式创建一个对象,该对象调用:
public String format(Date date):方法格式化时间对象date
解析:
public Date parse(String source):从给定字符串的开始解析文本,以生成
一个日期。
public static void test() throws ParseException {
//实例化 使用默认构造器
SimpleDateFormat sdf = new SimpleDateFormat();
//格式化 日期--->字符串
Date date = new Date();
// System.out.println(date);
String format=sdf.format(date);
System.out.println(format);
//解析
String str="2020/2/22 下午1:14";//默认格式
Date parse = sdf.parse(str);
System.out.println(parse);
}
如果想要按指定的方式来格式化 可以调用带参的构造器
public static void test() throws ParseException {
Date date = new Date();
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String format2 = sdf2.format(date);
System.out.println(format2);//2020-02-22 01:23:15
//将得到的字符串进行解析
Date date1 = sdf2.parse(format2);
System.out.println(date1);
}
这里的date会按指定格式yyyy-MM-dd hh:mm:ss打印出来 同样解析也能传递此格式的字符串进行解析
- java.util.Calendar(日历)类
Calendar是一个抽象基类,主用用于完成日期字段之间相互操作的功能。
获取Calendar实例的方法:
- 使用Calendar.getInstance()方法
- 调用它的子类GregorianCalendar的构造器。
一个Calendar的实例是系统时间的抽象表示,通过get(int field)方法来取得想
要的时间信息。比如YEAR、MONTH、DAY_OF_WEEK、HOUR_OF_DAY 、
MINUTE、SECOND
static void test(){
//初始化
//方式一:创建其子类 GregorianCalendar对象
//方式二调用静态方法
Calendar instance = Calendar.getInstance();
//常用方法
//get()
int day = instance.get(Calendar.DAY_OF_MONTH);//当前时间在这个月是第几天
System.out.println(day);
System.out.println(instance.get(Calendar.DAY_OF_YEAR));
//set()
instance.set(Calendar.DAY_OF_MONTH,23);//修改了原本的instance值
day = instance.get(Calendar.DAY_OF_MONTH);
System.out.println(day);
//add()
instance.add(Calendar.DAY_OF_MONTH,3);//在原本的值上增加3天
day = instance.get(Calendar.DAY_OF_MONTH);
System.out.println(day);
//getTime():日历类---->Date
Date time = instance.getTime();//返回一个当前时间的Date对象
System.out.println(time);
//setTime Date----->日历类
Date date=new Date();
instance.setTime(date);//Date转货为日历类
day = instance.get(Calendar.DAY_OF_MONTH);//在获取这个date时间是当前月的第几天
System.out.println(day);
}
注意:
- 获取月份时:一月是0,二月是1,以此类推,12月是11
- 获取星期时:周日是1,周二是2 , 。。。。周六是7