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

目录
  • Date类
  • Calendar 类
  • DateFormat 类
  • SimpleDateFormat 类

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()));
 	}
}

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

(0)

相关推荐

  • Java日期时间格式化操作DateUtils 的整理

    Java日期时间格式化操作DateUtils 的整理 直接上代码,总结了开发过程中经常用到的日期时间格式化操作! import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.concurrent.TimeUnit; /** * ClassName: DateUtils <br/> * D

  • Java使用DateTimeFormatter格式化输入的日期时间

    要求: 用DateTimeFormatter实现: 用扫描器获取输入的时间(年月日时分),这个时间的格式是常用的格式,然后格式化这个时间,把格式化的时间输出到控制台,可以在控制台重复输入时间.格式化的时间参考企业微信聊天记录的展示时间 分析: 1.时间的常用格式为: xxxx-xx-xx xx:xx xxxx/xx/xx xx:xx xxxx.xx.xx xx:xx 等格式 2.微信显式时间格式为: 今天显式: 00:01 - 23:59 ; 昨天显式: 昨天 01:01 ; 前天显式: 周几

  • Java使用DateFormatter格式化日期时间的方法示例

    本文实例讲述了Java使用DateFormatter格式化日期时间的方法.分享给大家供大家参考,具体如下: Java版本:1.8开始 import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; /** * Created by Fra

  • java8 时间日期的使用与格式化示例代码详解

    目录 LocalDate LocalTime LocalDateTime Instant Duration Period ZoneId 时间与字符串之间的转化 与旧Date API的转换 LocalDate // 日期 LocalDate localDate = LocalDate.now(); System.out.println(localDate); // yyyy-MM-dd System.out.println(localDate.getYear()); // 年 System.out

  • JAVA格式化时间日期的简单实例

    复制代码 代码如下: import java.util.Date;import java.text.DateFormat; /*** 格式化时间类* DateFormat.FULL = 0* DateFormat.DEFAULT = 2* DateFormat.LONG = 1* DateFormat.MEDIUM = 2* DateFormat.SHORT = 3* @author    Michael * @version   1.0, 2007/03/09*/ public class T

  • java日期时间格式化@JsonFormat与@DateTimeFormat的使用

    如果要使用 @JsonFormat 这个注解的话,需要在项目中添加 jackson 相关的依赖包; 因为 @JsonFormat 注解不是 Spring 自带的注解,所以使用该注解前需要添加 jackson 相关的依赖包.当然,如果是 SpringBoot 项目就不需要自己手动添加依赖了,因为在 spring-boot-start-web 下已经包含了 jackson 相关依赖. <!-- https://mvnrepository.com/artifact/com.fasterxml.jack

  • JAVA 格式化日期、时间的方法

    使用 DateFormat 格式化日期.时间 DateFormat 也是一个抽象类,它也提供了如下几个类方法用于获取 DateFormat 对象. getDateInstance():返回一个日期格式器,它格式化后的字符串只有日期,没有时间.该方法可以传入多个参数,用于指定日期样式和 Locale 等参数:如果不指定这些参数,则使用默认参数. getTimeInstance():返回一个时间格式器,它格式化后的字符串只有时间,没有日期.该方法可以传入多个参数,用于指定时间样式和 Locale 等

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

    目录 Date类 Calendar 类 DateFormat 类 SimpleDateFormat 类 Date类 在java.util.Date包中封装了许多现在的日期和时间, 构造函数: Date类表示特定的时间,精确到毫秒.在Java1.1之前,Date类中有好几个函数,允许把时间解释成年月日分秒,也允许解析和格式化日期字符串,由于这些函数不能实现国际化,从Java1.1之后,使用 Calendar 类实现日期和时间字段之间转换. Date d=new Date(); //使用当前日期和时

  • JAVA中的日期时间类用法总结

    前言 好记性不如烂笔头,日期时间类那么花哨不如记下来多看两眼. 提示:以下是本篇文章正文内容,下面案例可供参考 一.日期时间类的包 代码如下(示例): java.util.Date; java.time.format.DateTimeFormatter; java.util.Calendar java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.LocalDateTime; import java.tim

  • 详解在java中进行日期时间比较的4种方法

    1. Date.compareTo() java.util.Date提供了在Java中比较两个日期的经典方法compareTo(). 如果两个日期相等,则返回值为0. 如果Date在date参数之后,则返回值大于0. 如果Date在date参数之前,则返回值小于0. @Test void testDateCompare() throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

  • MySQL中的日期时间类型与格式化方式

    目录 [1]MySQL中的日期时间类型 ① 详细解释 ② SQL语句实例 ③ timestamp字段 ④ 测试实例 [2]日期时间类型格式化 ① DATE_FORMAT( )函数 ② date_format( ) 转换格式 ③ str_to_date()函数 [1]MySQL中的日期时间类型 MySQL中常用的几种时间类型有:date.datetime.time.year.timestamp 数据类型 占用字节 最小值 最大值 零值表示 date 4 1000-01-01 9999-12-31

  • Java中的日期和时间类以及Calendar类用法详解

    Java日期和时间类简介 Java 的日期和时间类位于 java.util 包中.利用日期时间类提供的方法,可以获取当前的日期和时间,创建日期和时间参数,计算和比较时间. Date 类 Date 类是 Java 中的日期时间类,其构造方法比较多,下面是常用的两个: Date():使用当前的日期和时间初始化一个对象. Date(long millisec):从1970年01月01日00时(格林威治时间)开始以毫秒计算时间,计算 millisec 毫秒.如果运行 Java 程序的本地时区是北京时区(

  • 详解Java中的日期类

    Java 编程语言中时间的处理类有 Date类与 Calendar类.目前官方不推荐使用 Date类,因为其不利于国际化:而是推荐使用 Calendar类,并使用 DateFormat 类做格式化处理. 一.Date 类介绍 Date 表示特定的瞬间,精确到毫秒. 在 JDK 1.1 之前,类 Date 有两个其他的函数.它允许把日期解释为年.月.日.小时.分钟和秒值.它也允许格式化和解析日期字符串. 不过,这些函数的 API 不易于实现国际化.从 JDK 1.1 开始,应该使用 Calenda

  • Java中joda日期格式化工具的使用示例

    1.基本介绍 Java自带日期格式化工具DateFormat ,但是DateFormat 的所有实现,包括 SimpleDateFormat 都不是线程安全的,因此你不应该在多线程序中使用,除非是在对外线程安全的环境中使用,如 将 SimpleDateFormat 限制在 ThreadLocal 中.如果你不这么做,在解析或者格式化日期的时候,可能会获取到一个不正确的结果.因此,从日期.时间处理的所有实践来说,我强力推荐使用joda-time 库. 2.joda-time的使用 引入依赖 <de

  • 一文搞懂Java中的日期类

    目录 一.日期类 1.1 第一代日期类 1.2 第二代日期类Calendar 1.3 第三代日期类 一.日期类 在程序的开发中我们经常会遇到日期类型的操作,Java对日期类型的操作提供了很好的支持.在最初的版本下,java.lang包中的System.currentTimeMillis();可以获取当前时间与协调时间(UTC)1970年1月1日午夜之间的时间差(以毫秒为单位测量).我们往往通过调用该方法计算某段代码的耗时. public class TestTime { public stati

  • Java 中DateUtils日期工具类的实例详解

    Java 中DateUtils日期工具类的实例详解 介绍 在java中队日期类型的处理并不方便,通常都需要借助java.text.SimpleDateFormat类来实现日期类型 和字符串类型之间的转换,但是在jdk1.8之后有所改善,jdk1.7以及之前的版本处理日期类型并不方便, 可以借助Joda Time组件来处理,尤其是日期类型的一些数学操作就更是不方便. java代码 /** * * 日期工具类 java对日期的操作一直都很不理想,直到jdk1.8之后才有了本质的改变. * 如果使用的

  • java实现的日期时间转换工具类完整示例

    本文实例讲述了java实现的日期时间转换工具类.分享给大家供大家参考,具体如下: 最基础的东西,总结一下,下次用的时候就方便一些了.废话不多说,直接贴代码: package com.incar.base.util; import com.incar.base.exception.BaseRuntimeException; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDat

随机推荐