日期操作类

在实际开发中经常会遇到日期类型的操作,Java对日期类型的操作提供了良好的支持,有java.util包中的Date类、Calender类,还有java.text包中的DateFormat类及它的子类SimpleDateFormat类。

1、Date类

java.util包中的Date类用于表示日期和时间,里面大多数构造器方法和常用方法被标记为已过时,但创建日期的方法很常用,它的构造方法中只有2个没有标记过时,以下案例来演示,

import java.util.Date;

public class TestDate {
    public static void main(String[] args) {
        Date date1=new Date();
        System.out.println(date1);
        Date date2 = new Date(888877775555L);
        System.out.println(date2);
    }
}

2、Calender类

Calender类可以将取得时间精确到毫秒。Calender类是一个抽象类,它提供了很多常量,Calender类常量表和Calender类的常用方法,表格如下,

Calender类的常用常量
public static final int YEAR获取年
public static final int MONTE获取月
public static final int DAY_OF_MONTH获取日
public static final int HOUR_OF_DAY获取小时,24小时制
public static final int MINUTE获取分
public static final int SECOND获取秒
public static final int MILLISECOND获取毫秒

Calender类的常用方法
方法声明功能描述
static Calender getInstance()使用默认时区和语言环境获取得一个日历
static Calender getInstance(Locate aLocate)使用默认时区和指定语言环境获得一个日历
int get(int field)返回给定日历字段的值
boolean after(Object when)判断Calender表示的时间是否在指定Object表示的时间之后,返回判断结果。
boolean before(Object when)判断Calender表示的时间是否在指定Object表示的时间之前,返回判

3、DateFormat类

实际开发中需要对日期进行格式化操作,Java提供了DateFormat类用于支持日期格式化。该类是一个抽象类,需要通过它的一些静态方法来获取它的示例对象,有一些方法可以用,如下,

DateFormat类的常用常量
方法声明功能描述
static  DateFormat getDateInstance()获取日期格式器,该格式器具有默认语言环境的默认格式化风格
static  DateFormat getDateInstance(int style,Locale aLocale)获取日期格式器,该格式器具有给定语言环境的格式化风格
static DateFormat getDateTimeInstance(int dateStyle,int timeStyle,Locale aLocale)获取日期/时间格式器,该格式器具有给定语言环境的给定格式化风格
static  DateFormat  getDateTimeInstance()获取日期/时间格式器,该格式器具有给定语言环境的给定格式化风格
String format(Date date)将一个Date格式化为日期或时间字符串
Date parse(String source)从给定字符串的开头解析文本,以生成一个日期

相关方法演示如下,

public class TestDateFormat {
    public static void main(String[] args) {
        DateFormat df1 = DateFormat.getDateInstance();
        DateFormat df2 = DateFormat.getTimeInstance();

        DateFormat df3 = DateFormat.getDateInstance(DateFormat.YEAR_FIELD,new Locale("zh","CN"));
        DateFormat df4 =DateFormat.getTimeInstance(DateFormat.ERA_FIELD,new Locale("zh","CN"));

        System.out.println(df1.format(new Date()));
        System.out.println(df2.format(new Date()));
        System.out.println(df3.format(new Date()));
        System.out.println(df4.format(new Date()));
    }
}

4、SimpleDateFormat类

如果想要得到特殊的日期显示格式,可以通过DateFormat的子类SimpleDateFormat类来实现,(当然,因为SimpleDateFormat类继承了DateFormat类,所以,它可以直接使用父类的方法格式化日期和时间),SimpleDateFormat位于java.text包中。要定义格式化日期,需要有一些特定的日期标记来表示日期格式,常用的日期标记如下表,

常用日期标记
日期标记功能描述
y年,需要用yyyy表示年份的4位数
M月份,需要用MM表示月份的2位数
d天数,需要用dd表示天数的2位数
H小时(24小时制,需要用hh表示小数的2位数)
h小时(12小时制,需要用hh表示小数的2位数)
m分钟,需要用mm表示分钟的2位数
s秒数,需要用ss表示秒数的2位数
S毫秒,需要用SSS表示毫秒的3位数
G公元,只需要写一个G表示公元

在创建SimpleDateFormat类的实例对象时需要用到它的构造方法,有四个,有一个最常用:

public SimpleDateFormat(String pattern)

下面通过一个案例演示,

SimpleDateFormat sdf  = new SimpleDateFormat();
String date = sdf.format(new Date());
System.out.println("默认格式:"+date);

SimpleDateFormat sdf1  = new SimpleDateFormat("yyyy-MM-dd");
date = sdf1.format(new Date());
System.out.println("自定义格式1:"+date);

SimpleDateFormat sdf2  = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss:SSS");
date = sdf2.format(new Date());
System.out.println("自定义格式2:"+date);

 运行结果

5、日期时间API

java8之前的Date类和Calender类都是线程不安全的,而且使用起来比较麻烦,java8提供的全信的时间日期API有LocalDate(日期)、LocalTime(时间)、LocalDateTime(时间和日期)、Instant(时间戳)、Period(计算两个日期间隔),下面演示一些API用法

1、本地化日期时期API

LocalDate(日期)、LocalTime(时间)、LocalDateTime(时间和日期)可以用在不需要处理时区的情况中,

public class DateNew{
        public static void main(String[] args){
              DateNew tester = new DateNew();
              tester.testLocalDateTime();}
    public void testLocalDateTime(){

        //获取当前时间
        LocalDateTime currentTime = LocalDateTime.now() ;
        System.out.println("当前时间:"+currentTime);

        LocalDate date1 =  currentTime.toLocalDate();
        System.out.println("date1:"+currentTime);

        Month month = currentTime.getMonth();
        int day=currentTime.getDayOfMonth();
        int second = currentTime.getSecond();
        System.out.println(month + "\t"+day+"\t"+second);

        LocalDateTime date2 = currentTime.withDayOfMonth(10).withYear(2012);
        System.out.println("date2:"+date2);
        //12 December 2021
        LocalDate date3 = LocalDate.of(2021,Month.DECEMBER,12);
        System.out.println("date3:"+date3);
        //22小时15分钟
        LocalTime date4 = LocalTime.of(22,15);
        System.out.println("date4:"+date4);
        //解析字符串
        LocalTime date5 = LocalTime.parse("22:15:30");
        System.out.println("date5:"+date5);
    }

}

  • 32
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值