Date类 java.util.Date
代表了一个特定的时间,以毫秒为精度
构造方法
public Date() 分配一个Date对象,并初始化,以便代表它被分配的时间,精确到毫秒
public Date(long date) 分配一个Date对象,并将其初始化为从标准基准时间起指定的毫秒数 (1970年一月一日起)
Date类常用方法
public long getTime() 获取日期对象从1970年1月1日00:00:00到现在的毫秒值
public void setTime(long time) 设置时间,给的是毫秒值(注意时差)
实例如下
import java.util.Date;
public class Ddate {
public static void main(String[] args) {
Date d=new Date();//Date d=new Date(20000);
System.out.println(d.getTime());
d.setTime(3600);
System.out.println(d.getTime());
}
}
SimpleDateFormat类 java.text.SimpleDateFormat
用于以区域设置敏感的方式格式化和解析日期的具体类
日期和时间格式由日期和时间模式字符串指定。 在日期和时间模式字符串中,从'A'
到'Z'
以及从'a'
到'z'
未加引号的字母被解释为表示日期或时间字符串的组成部分的模式字母。
y | 年 |
M | 月 |
d | 日 |
H | 时 |
m | 分 |
s | 秒 |
构造方法
public SimpleDateFormat() 构造一个 SimpleDateFormat使用默认模式和日期格式符号默认设置。
public SimpleDateFormat(String pattern) 构造一个SimpleDateFormat使用给定的模式和默认的 日期格式符号设置。
SimpleDateFormat的格式化与解析日期
格式化(Date->String) public final String format(Date date) 将日期格式化为日期/时间字符串
解析(String->Date)public Date parse(String sourse) 从给定字符串的开始解析文本以生成日期
实例如下
package API;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Simpledateformat {
public static void main(String[] args) throws ParseException {
//parse()过时 抛出异常throws ParseException
SimpleDateFormat sim=new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
System.out.println(sim);//java.text.SimpleDateFormat@ca92313f
Date d=new Date();
String s=sim.format(d);//Date->String
System.out.println(s);//2022年03月30日 03:23:27
String ss="2003-03-28 00:00:00";
//SimpleDateFormat simp=new SimpleDateFormat("yyyy MM dd HH:mm:ss");
/*Exception in thread "main" java.text.ParseException: Unparseable date: "2003-03-28 00:00:00"
at java.base/java.text.DateFormat.parse(DateFormat.java:396)
at API.Simpledateformat.main(Simpledateformat.java:22)
*/
//格式错误,yyyy MM dd HH:mm:ss与2003-03-28 00:00:00格式不对应
SimpleDateFormat simp=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date dd=simp.parse(ss);
System.out.println(simp);//java.text.SimpleDateFormat@4f76f1a0
//若直接打印SimpleDateFormat对象只会得到地址值,所以需要格式化与解码
System.out.println(dd);//Fri Mar 28 00:00:00 CST 2003
}
}
Calendar类 java.util.Calendar
public abstract class Calendar 抽象类,不能直接实例化。为在某一特定时刻和一段日历字段的转换提供了一些方法,并为操作日历字段提供了一些方法
Calendar提供了一个类方法getInstance用于获取Calendar对象,其日历字段已使用当前日期和时间初始化; 如下
Calendar 对象名=Calendar.getInstance();//多态的形式
Calender的常用方法
public int get(int field) 返回给定日历字段的值
public abstract void add(int filed,int amout)根据日历的规则,将指定时间量添加或减去给定的日历字段
public final void set(int year,int mouth,int date)设置当前日历的年月日
Calendar字段汇总 JDK11
变量和类型 | 字段 | 描述 |
---|---|---|
static int | ALL_STYLES | getDisplayNames的样式说明符,指示所有样式中的名称,例如“January”和“Jan”。 |
static int | AM | AM_PM字段的值,表示从午夜到正午之前的一天的时段。 |
static int | AM_PM |
|
static int | APRIL | MONTH字段的值,表示格里高利和朱利安日历中一年中的第四个月。 |
protected boolean | areFieldsSet | 如果 |
static int | AUGUST | MONTH字段的值,表示格里高利和朱利安日历中一年中的第八个月。 |
static int | DATE |
|
static int | DAY_OF_MONTH |
|
static int | DAY_OF_WEEK | 字段编号为 |
static int | DAY_OF_WEEK_IN_MONTH |
|
static int | DAY_OF_YEAR |
|
static int | DECEMBER | MONTH字段的值,表示格里高利和朱利安日历中的一年中的第十二个月。 |
static int | DST_OFFSET |
|
static int | ERA |
|
static int | FEBRUARY | MONTH字段的值,表示格里高利和朱利安日历中一年中的第二个月。 |
static int | FIELD_COUNT |
|
protected int[] | 字段 | 此日历的当前设置时间的日历字段值。 |
static int | FRIDAY | DAY_OF_WEEK字段的值表示星期五。 |
static int | HOUR |
|
static int | HOUR_OF_DAY |
|
protected boolean[] | isSet | 用于指示是否设置了日历的指定日历字段的标志。 |
protected boolean | isTimeSet | 如果那么 |
static int | JANUARY | MONTH字段的值,表示Gregorian和Julian日历中一年中的第一个月。 |
static int | JULY | MONTH字段的值,表示格里高利和朱利安日历中一年中的第七个月。 |
static int | JUNE | MONTH字段的值,表示格里高利和朱利安日历中的第六个月。 |
static int | LONG | getDisplayName和 getDisplayNames的样式说明 符 ,相当于 LONG_FORMAT 。 |
static int | LONG_FORMAT | getDisplayName和 getDisplayNames的样式说明 符 ,指示用于格式的长名称。 |
static int | LONG_STANDALONE | getDisplayName和 getDisplayNames的样式说明 符 ,表示独立使用的长名称,例如月份名称作为日历标题。 |
static int | MARCH | MONTH字段的值,表示格里高利和朱利安日历中一年中的第三个月。 |
static int | MAY | MONTH字段的值,表示Gregorian和Julian日历中一年中的第五个月。 |
static int | MILLISECOND |
|
static int | MINUTE |
|
static int | MONDAY | DAY_OF_WEEK字段的值表示星期一。 |
static int | MONTH |
|
static int | NARROW_FORMAT | getDisplayName和 getDisplayNames的样式说明 符 ,指示用于格式的窄名称。 |
static int | NARROW_STANDALONE | getDisplayName和 getDisplayNames的样式说明 符 , 独立指示窄名称。 |
static int | NOVEMBER | MONTH字段的值,表示格里高利和朱利安日历中一年中的第11个月。 |
static int | OCTOBER | MONTH字段的值,表示格里高利和朱利安日历中一年中的第十个月。 |
static int | PM | AM_PM字段的值,表示从中午到午夜之前的一天的时段。 |
static int | SATURDAY | 表示星期六的 DAY_OF_WEEK字段的值。 |
static int | SECOND |
|
static int | SEPTEMBER | MONTH字段的值,表示格里高利和朱利安日历中一年中的第九个月。 |
static int | SHORT | getDisplayName和 getDisplayNames的样式说明 符 ,相当于 SHORT_FORMAT 。 |
static int | SHORT_FORMAT | getDisplayName和 getDisplayNames的样式说明 符 ,指示用于格式的短名称。 |
static int | SHORT_STANDALONE | getDisplayName和 getDisplayNames的样式说明 符 ,指示独立使用的短名称,例如月份缩写作为日历标题。 |
static int | SUNDAY | 表示星期日的 DAY_OF_WEEK字段的值。 |
static int | THURSDAY | DAY_OF_WEEK字段的值表示星期四。 |
protected long | time | 此日历的当前设置时间,以1970年1月1日格林威治标准时间0:00:00之后的毫秒数表示。 |
static int | TUESDAY | 表示星期二的 DAY_OF_WEEK字段的值。 |
static int | UNDECIMBER | MONTH字段的值,表示一年中的第13个月。 |
static int | WEDNESDAY | DAY_OF_WEEK字段的值表示星期三。 |
static int | WEEK_OF_MONTH |
|
static int | WEEK_OF_YEAR |
|
static int | YEAR | 字段编号为 |
static int | ZONE_OFFSET |
|
实例如下
package API;
import java.util.Calendar;
public class Cclender {
public static void main(String[] args) {
Calendar c=Calendar.getInstance();
System.out.println(c.get(Calendar.YEAR)+" "+c.get(Calendar.MONTH)+" "+c.get(Calendar.DATE));
//2022 2 30
c.add(Calendar.YEAR, -1);
System.out.println(c.get(Calendar.YEAR)+" "+c.get(Calendar.MONTH)+" "+c.get(Calendar.DATE));
//2021 2 30
c.set(2003, 03,28);
System.out.println(c.get(Calendar.YEAR)+" "+c.get(Calendar.MONTH)+" "+c.get(Calendar.DATE));
//2003 3 28
}
}