Java中的日期时间处理及格式化处理

Date类

在java.util.Date包中封装了许多现在的日期和时间,

构造函数:

Date类表示特定的时间,精确到毫秒。在Java1.1之前,Date类中有好几个函数,允许把时间解释成年月日分秒,也允许解析和格式化日期字符串,由于这些函数不能实现国际化,从Java1.1之后,使用 Calendar 类实现日期和时间字段之间转换。

 Date d=new Date();  //使用当前日期和时间来处理
 Date d=new Date(long date);  //以基准时间1970年1月1日经过参数date指定的毫秒数

Date类常用方法:

方法名 说明
boolean after(Date date) 返回此方法的对象是不是在指定日期之后
boolean before(Date date) 返回此方法的对象是不是在指定日期之前
Object clone() 返回此对象的副本
int compareTo(Date anotherDate) 比较两个指定日期,相等则等于0,调用对象在指定日期之后返回1,否则返回-1.
boolean equals(Object obj) 比较两个日期的相等性
String toString() 将Date对象以字符串形式输出
long getTime 返回从1970年1月1日次Date对象的毫秒数
import java.util.Date;

public class dome2{
 	public static void main(String[] args) {
 	  Date d=new Date(1000000000);
 	  Date d1=new Date();
 	 //d1在d之后
 	  System.out.println(d1.after(d));
 	  //d在d1之前
 	  System.out.println(d.before(d1));
 	  //判断d在d1的什么位置
 	  System.out.println(d.compareTo(d1));
 	  //判断两个对象相等
 	  System.out.println(d.equals(d1));
 	   //获取当前时间的毫秒数
 	 System.out.println(d1.getTime());
	}
}

结果
true
true
-1
false
1629430067783

例1,给定一个266600000的毫秒数,求出这个毫秒数代表几天几时几分几秒。

public class dome2{
 	public static void main(String[] args) {
 	  int date=266600000;
 	  date/=1000;   //毫秒数转化成秒
 	  int  day=date/86400;   //一天有86400秒,计算有多少天
 	  int  hour=date%86400/3600;   //一小时有3600秒,计算有多少个小时
 	  int  minute=date%86400%3600/60;  //一分钟60秒,计算有多少分钟
 	  int  second=date%86400%3600%60;  //计算最后的秒数
 	  System.out.println(day+"天 "+hour+"时 "+minute+"分 "+second+"秒");
 	  
	}
}

结果
3天 2时 3分 20秒

Calendar 类

Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。Calendar类不能使用new关键字,它提供了一个 getInstance() 方法来获得Calendar类的对象。

Calendar c=Calendar.getInstance(); //获得对象

Calendar 类常用方法:

方法名 说明
void add(int field, int amount) 根据日历的规则,为给定的日历字段添加或减去指定的时间量。1则代表的是对年份操作,2是对月份操作,3是对星期操作,5是对日期操作,11是对小时操作,12是对分钟操作,13是对秒操作,14是对毫秒操作
boolean after() Calendar表示的时间是否在指定的时间之后。
boolean before() Calendar表示的时间是否在指定的时间之前。
Date getTime() 返回此calendar时间值的date对象
long getTimeInMillis() 返回Calendar的时间值
void clear() 清空Calendar类的日期和时间
Object clone() 创建并返回一个副本
int compareTo(Calendar anotherCalendar) 比较两个Calendar类的时间值,大则返回1,小则返回-1,否则返回0
int get(int field) 返回指定日历的时间
int getFirstDayOfWeek() 获取一周的第一天,在美国,第一天是sunday,而在法国则monday。
static Calendar getInstance() 使用默认时区和语言获得一个日历
int getActualMaximum(int field) 返回指定日历字段的最大值
int getActualMinimum(int field) 返回指定日历字段的最小值
void set(int field, int value) 为指定的日历字段设定指定值
void set(int year, int month, int date) 设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值
void set(int year, int month, int date, int hourOfDay, int minute) 设置日历字段 YEAR、MONTH、DAY_OF_MONTH、HOUR_OF_DAY 和 MINUTE 的值。
void set(int year, int month, int date, int hourOfDay, int minute, int second) 设置字段 YEAR、MONTH、DAY_OF_MONTH、HOUR、MINUTE 和 SECOND 的值。
void setFirstDayOfWeek(int value) 设置一个星期的第一天是哪天
void setTimeInMillis(long millis) 利用给定long值设置此时calendar的当前时间

Calendar字段:

Calendar类可以通过get方法获取很多有关时间的值,在Calendar中定义了许多字段,也就是常量,不同的常量代表不同的时间名。

字段名 说明
YEAR 年份
MONTH 月份,0代表1一月份,11代表12月份
DATE 日期,一个月中的几号
DAY_OF_MONTH 与DATE相同,日期
HOUR 十二小时制的几时
HOUR_OF_DAY 24小时制的几时
MINUTE 分钟
SECOND
DAY_OF_WEEK 一个星期的哪天,星期几
AM_PM 返回小时是在中午之前还是在中午之后,1代表下午,0代表上午
DAY_OF_YEAR 返回当前年中的第多少天
WEEK_OF_YEAR 一年当中的第几个星期
WEEK_OF_MONTH 一个月中的第几个星期

Calendar类返回实例:

import java.util.Calendar;

public class dome2{
 	public static void main(String[] args) {
        Calendar c=Calendar.getInstance();
        System.out.println("返回当前时间:"+c.getTime());
        System.out.println("返回当前年份:"+c.get(Calendar.YEAR));
        System.out.println("返回当前月份:"+(c.get(Calendar.MONTH)+1));
        System.out.println("返回当前的日"+c.get(Calendar.DATE));
        System.out.println("返回当前星期几:"+(c.get(Calendar.DAY_OF_WEEK)-1));
        System.out.println("返回当前是一年中的第几天:"+c.get(Calendar.DAY_OF_YEAR));
        System.out.println("返回当前是一年中的第几个星期:"+c.get(Calendar.WEEK_OF_YEAR));
        System.out.println("返回当前是一个月中的第几个星期:"+c.get(Calendar.WEEK_OF_MONTH));
        System.out.println("返回当前的小时(十二小时制):"+c.get(Calendar.HOUR));
        System.out.println("返回当前的小时(二十四小时制):"+c.get(Calendar.HOUR_OF_DAY));
        System.out.println("返回当前是时间是多少分:"+c.get(Calendar.MINUTE));
        System.out.println("返回当前时间的秒:"+c.get(Calendar.SECOND));
	}
}

例子:

public class dome2{
 	public static void main(String[] args) {
         Calendar c=Calendar.getInstance();
         c.set(2020,3,1,15,5,23);
         Date date=c.getTime();
         System.out.println(date);
         StringBuffer str=new StringBuffer();
         str.append(c.get(Calendar.YEAR)+"年");
         str.append(c.get(Calendar.MONTH)+"月");   //设定的月份不用加1
         str.append(c.get(Calendar.DATE)+"日");
         str.append(c.get(Calendar.HOUR)+"时");
         str.append(c.get(Calendar.MINUTE)+"分");
         str.append(c.get(Calendar.SECOND)+"秒");
         System.out.println(str.toString());
	}
}

结果
Wed Apr 01 15:05:23 CST 2020
2020年3月1日3时5分23秒

DateFormat 类

  • DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。日期/时间格式化子类(如 SimpleDateFormat)允许进行格式化(也就是日期 -> 文本)、解析(文本-> 日期)和标准化。
  • DateFormat 可帮助进行格式化并解析任何语言环境的日期。对于月、星期,甚至日历格式(阴历和阳历),其代码可完全与语言环境的约定无关。
  • DateFormat 不能使用new关键字。要使用 DateFormat 类的getDateInstance()方法来创建对象。
DateFormat d=DateFormat.getInstance();  //创建对象

在DateFormat对象中使用方法来对时间和日期进行格式化,见图。

方法名 说明
String format(Date date) 将Date的日期和时间格式化成字符串
Calendar getCalendar() 返回当前时间日期相关的日历
static DateFormat getDateInstance() 返回默认语言格式化的日期,例如几年几月几号
static DateFormat getDateInstance(int style) 获取指定的格式化日期的日历,datestyle中:FULL表示几年几月几号星期几,MEDIUM和LONG表示几年几月几日,SHORT表示Y/M/D
static DateFormat getDateInstance(int style,Locale locale) 获取指定日期格式化风格和语言环境的日历
static DateFormat getDateTimeInstance() 获取默认格式化风格和语言环境的日期时间格式,如几年几月几日上午或上午hh:mm:ss
static DateFormat getDateTimeInstance(int dateStyle,int timeStyle) 获取指定格式化风格和语言环境的时间日期格式,timeStyle中:FULL表示中国标准时间 上午还是下午hh:mm:ss;SHORT和MEDIUM表示上午或下午hh:mm:ss;LONG表示CST 上午或下午hh:mm:ss
static DateFormat getDateTimeInstance(int dateStyle,int timeStyle,Locale locale) 获取指定日期时间格式风格和语言环境的日历
static DateFormat getTimeInstance() 获取默认格式化风格和语言环境的时间格式
static DateFormat getTimeInstance(int style) 获取指定格式化风格和默认语言环境的时间格式,参照上面第七个的timeStyle格式方式
static DateFormat getTimeInstance(int style,Locale locale) 获取指定格式化风格和指定语言环境的时间格式
Date parse(String source) 将字符串解析成日期/时间

例子:

import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;

public class dome2{
 	public static void main(String[] args) {
         DateFormat d=DateFormat.getInstance();
         //创建指定日期格式和中国语言环境的日期格式
         DateFormat d1=d.getDateInstance(DateFormat.FULL,Locale.CHINA);
         DateFormat d2=d.getDateInstance(DateFormat.LONG,Locale.CHINA);
         DateFormat d3=d.getDateInstance(DateFormat.SHORT,Locale.CHINA);
         DateFormat d4=d.getDateInstance(DateFormat.MEDIUM,Locale.CHINA);
         //创建指定时间格式和中国语言环境的时间格式
         DateFormat d5=d.getTimeInstance(DateFormat.FULL,Locale.CHINA);
         DateFormat d6=d.getTimeInstance(DateFormat.LONG,Locale.CHINA);
         DateFormat d7=d.getTimeInstance(DateFormat.SHORT,Locale.CHINA);
         DateFormat d8=d.getTimeInstance(DateFormat.MEDIUM,Locale.CHINA);
         //返回指定风格和语言环境的日期
         String s1=d1.format(new Date());
         String s2=d2.format(new Date());
         String s3=d3.format(new Date());
         String s4=d4.format(new Date());
         //返回指定风格和中国语言环境的时间
         String s5=d5.format(new Date());
         String s6=d6.format(new Date());
         String s7=d7.format(new Date());
         String s8=d8.format(new Date());
         System.out.println("FULL的是:"+s1+"\t"+s5);
         System.out.println("LONG的是:"+s2+"\t"+s6);
         System.out.println("SHORT的是:"+s3+"\t"+s7);
         System.out.println("MEDIUM的是:"+s4+"\t"+s8);
 	}
}

结果
FULL的是:2021年8月21日星期六 中国标准时间 下午8:49:44
LONG的是:2021年8月21日 CST 下午8:49:44
SHORT的是:2021/8/21 下午8:49
MEDIUM的是:2021年8月21日 下午8:49:44

SimpleDateFormat 类

在使用DateFormat 类时,只有固定格式,在java.text.SimpleDateFormat包有一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。 SimpleDateFormat 使得可以选择任何用户定义的日期-时间格式的模式。

SimpleDateFormat 类基本构造方法:

SimpleDateFormat 类是DateFormat 类的一个子类。

  • new SimpleDateFormat();默认模式和默认日期格式符号创造。
  • SimpleDateFormat(String pattern);使用指定的模式和默认日期格式符号创造。
  • SimpleDateFormat(String pattern, Locale locale);使用指定的模式和指定语言环境的默认日期符号构造。

DateFormat 也可以new SimpleDateFormat对象。有些方法还是建议通过 DateFormat 中的 getTimeInstance、getDateInstance 或 getDateTimeInstance 来创建日期-时间格式器。

DateFormat d=new SimpleDateFormat();

代表日期和时间的模式元素字母:

字母 含义 示例
y 年,一个y代表一位 "yyy"代表019,"yyyy"代表2019
M 月份 例如八月,M代表8,MM代表08
w 一年中的第几周 常用ww表示
W 一个月中的第几周 常用WW表示
d 一个月中的第几天 常用dd表示
D 一年中的第几天 常用DDD表示
E 星期几,用E表示星期,根据不同语言环境返回 CHINA表示星期几,US表示英文缩写
a 上午或下午 am代表上午,pm代表下午
H 一天中的小时数,二十四小时制 常用HH表示
h 一天中的小时数,十二小时制 常用hh表示
m 分钟数 常用mm表示
s 秒数 常用ss表示
S 毫秒数 常用SSS表示

返回当前的时间

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

public class dome2{
 	public static void main(String[] args) {
 		DateFormat d=new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒SSS毫秒");
 		System.out.println(d.format(new Date()));
 	}
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

你可能感兴趣的:(Java中的日期时间处理及格式化处理)