- Date类
- Calendar、GregorianCalendar类
- SimpleDateFormat类
java.util.Date
使用Date类代表当前系统时间。
但是在date里面的大多方法都是背弃用的。
小知识:
因为这些功能的API不适合国际化。 从JDK 1.1开始, Calendar类应该用于在日期和时间字段之间进行转换,并且DateFormat类应用于格式化和解析日期字符串。 所以在相应的方法Date被弃用。
import java.util.Date;
public class DateDemo01 {
public static void main(String[] args) {
Date date = new Date();
//date ==> date.toString()
System.out.println("date.toString()方法输出时间字符:" + date);
//return normalize().getYear() - 1900;所以再加上1900
System.out.println("date.getYear()方法输出年份:" + date.getYear() + 1900);
//返回月份(0 ~ 11)
System.out.println("date.getMonth()方法输出月份:" + date.getMonth() + 1);
//返回当前的日,就是返回几号
System.out.println("date.getDate()方法输出几号:" + date.getDate());
//返回小时,(0 ~ 23)
System.out.println("date.getHours()方法输出小时:" + date.getHours());
//返回当前分(0 ~ 59)
System.out.println("date.getMinutes()方法输出分:" + date.getMinutes());
//返回秒(0 ~ 59)
System.out.println("date.getSeconds()方法输出秒:" + date.getSeconds());
//返回星期几 (从星期日(0)开始到星期六(6)结束)
System.out.println("date.getDay()方法输出星期:" + date.getDay());
//返回自1970年1月1日以来到现在毫秒数
System.out.println("date.getTime()方法输出自1970到现在的时间:" + date.getTime());
//返回GMT格式的时间格式(d mon yyyy hh:mm:ss GMT)
System.out.println("date.toGMTString()方法输出GMT格式的时间:" + date.toGMTString());
//根据操作系统地区控制,返回本地的数字格式
System.out.println("date.toLocaleString()方法输出本地格式的时间:" + date.toLocaleString());
}
}
在创建Date的时候,默认不传值的话,会获取当前的最新事件。
当然在创建Date的时候,也可以传入一个自1970年到现在的long型的时间值,然后Date里面的方法就是对传入的这个时间进行解析。
Date d = new Date();
Date d = new Date(long d);
老规矩代码演示一下下:
import java.util.Date;
public class DateDemo02 {
public static void main(String[] args) throws InterruptedException {
//创建一个Date,获得当前时间
Date date1 = new Date();
System.out.println("输出当前的时间:tttt"+date1.toLocaleString()); //输出当前时间
Long date = date1.getTime(); //获得当前时间到1970年的时间差
Thread.sleep(5000); //这里是让线程5000ms,就是在这让程序暂停5秒
//创建一个对照组,用于输出现在的时间
Date date3 = new Date();
System.out.println("sleep 5秒后当前的时间:tt"+date3.toLocaleString());
//将上面的获得的时间差在创建的时候,就传入进去,对这个Long进行解析
Date date2 = new Date(date);
System.out.println("通过传入参数创建的Date时间为:"+date2.toLocaleString());
}
}
Calendar、GregorianCalendar类
Calendar是一个抽象类,抽象类是不能创建对象的。
所以在创建对象的时候是借助它的子类来创建的。(GregorianCalendar类)
所以在抽象类当中有提供到一个方法,来获得当前的时间。
创建方式一:
Calendar calendar = new GregorianCalendar();
所以这个类在创建一个对象的时候,是通过它的子类来创建的。
在api当中我们就可以直白的看出它的子类(GregorianCalendar):
所以在创建的时候,就可以通过它的子类来创建它的对象。
创建方式二:
Calendar calendar = Calendar.getInstance();//获得当前时间返回的是子类的对象
通过getInstance方法来获得当前的时间。
在Calendar类当中我们只要掌握了解一个方法足矣 o( ̄▽ ̄)o
get()方法
返回给定日历字段的值。
import java.util.Calendar;
import java.util.GregorianCalendar;
public class CalendarDemo01 {
public static void main(String[] args) {
//因为Calender是一个抽象类,所以它获得时间的方法并不是创建对象而获得的,直接通过调用方法获得时间
//Calendar calendar = Calendar.getInstance();获得当前时间
Calendar calendar = new GregorianCalendar();
System.out.println("获得时间:" + calendar.getTime());
System.out.println("获得年:" + calendar.get(Calendar.YEAR));
System.out.println("获得月:" + (calendar.get(Calendar.MONTH) + 1));
System.out.println("获得日:" + calendar.get(Calendar.DAY_OF_MONTH));
System.out.println("获得星期:" + calendar.get(Calendar.DAY_OF_WEEK));
System.out.println("获得一年中的第几天:" + calendar.get(Calendar.DAY_OF_YEAR));
}
}
这些都是常有的属性。
在api当然还有许多其他的功能。Calendar所有的Fields:
当然在这不仅仅可以get,也是可以set时间进去的。
SimpleDateFormat类这是一个具体的类,用于以区域来设置敏感的方式格式化和解析日期的。
主要用法:
- 将时间格式化为字符串
- 将字符串解析为时间
将时间格式化为字符串使用的方法:
public final String format(Date date)
将获得的值转换为字符串的形式,但是转换为字符串肯定是有向一个格式进行转换的。
所以我们在擦混给建SimpleDateFormat的时候给它格式进行转换。
将字符串转换为时间格式。
public Date parse(String source) throws ParseException
在这再说明一下,在常见生成转换为字符串的格式的时候,有两个方式传入pattern。
第一种:在创建的时候,直接传入pattern
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(“yyyy-MM-dd—HH:mm:ss”);
第二中:通过方法传入pattern
simpleDateFormat.applyPattern(“yyyy-MM-dd—HH:mm:ss”);
代码总起演示一下:
public class Demo01 {
public static void main(String[] args) throws ParseException {
//创建SimpleDateFormat,并传入格式(pattern)
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd---HH:mm:ss");
//将当前时间转换为String类型
String string = simpleDateFormat.format(new Date());
System.out.println(string);
//将字符串转换为date类型的
Date date = simpleDateFormat.parse(string);
System.out.println(date);
}
}
pattern每个字母代表的意义:
| 字母 | 意义 | 常用写发 |
|---|---|---|
| G | 公元/公元前 | G |
| Y / y | 年 | yyyy - 2001/ yy - 01 |
| M / L | 月 | MM / LL |
| w | 当年中的第几周 | ww |
| W | 当月中的第几周 | W |
| D | 当年中的第几天 | DDD |
| d | 当月中的第几天 | dd |
| F | 当月中的第几周 | F |
| E | 返回礼拜几(汉字) | E |
| u | 一周的第几天 | u(1=Monday;7=Sunday) |
| a | 一天党的时间差 | a |
| H / k | 小时(0~23) | HH / kk |
| h / K | 小时(0~11) | hh / KK |
| m | 分 | mm |
| s | 秒 | ss |
| S | 毫秒 | SSS |
| z / Z / X | 时差 | —— |
常用写一个当然也是可以的,写多个是为了前面为0,补0规整一点



