日期操作类

介绍Java中常用的日期类型及对日期的相对操作。

Date类

Date类是一个较为简单的操作类,在使用中直接使用java.util.Date类的构造方法并进行输出就可以得到一个完证的日期,构造方法:

public Date()

【得到系统当前时间】

import java.util.Date;
public class DateDemo01
{
    public static void main(String[] args){
        Date date=new Date();
        System.out.println("当前日期为:"+date);
    }
}

这里写图片描述

从程序的运行结果看,已经得到了系统当前的时间,但是并不是我们平时所见到的时间格式,而且现在的时间也不能精确到到毫秒,要想按照自己的格式显示时间就可以使用Calendar类完成操作。

Calendar类

Calendar类可以将取得的时间精确到毫秒,但是这个类本身就是一个抽象类,所以想要使用,必须实例化,Calendar的子类是GregorianCalendar类。在Calendar中提供了部分常量,

常量类型描述
public static final YEARint取得年
public static final MONTHint取得月
public static final DYA_OF_MONTHint取得日
public static final HOUR_OF_DAYint取得小时,24小时制
public static final MINUTEint取得分
public static final SECONDint取得秒
public static final MILLISECONDint取得毫秒

除了上面提供的全局常量,Calendar还提供了一些常用方法

方法类型描述
public static Calendar getInstance()普通根据默认的时区实例化对象
public boolean after(Object when)普通判读一个日期是否在指定日期之后
public boolean before(Object when)普通判读一个日期是否在指定日期之前
public int get(int feld)普通返回给定日历字段的值

下面通过以上方法取得一个系统的日期

import java.util.Calendar;
import java.util.GregorianCalendar;
public class DateDemo02
{
    public static void main(String[] args){
        Calendar calendar=null;
        calendar=new GregorianCalendar();
        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.HOUR_OF_DAY));
        System.out.println("分:"+calendar.get(Calendar.MINUTE));
        System.out.println("秒:"+calendar.get(Calendar.SECOND));
        System.out.println("毫秒:"+calendar.get(Calendar.MILLISECOND));
    }
}

这里写图片描述

DateFormat类

DateFromat是Format类的子类,专门用于格式化数据使用。从定义来看DateFromat类是一个抽象类,所以肯定无法直接实例化,但是在此抽象类中提供了一个静态方法,可以直接提供本类的实例,此类的常用方法:

方法类型描述
public static final DateFromat getDateInstance()普通得到默认的对象
public static final DateFromat getDateInstance(int type,Locale locale)普通根据Locale的到对象
public static final DateFromat getDateInstance()普通得到日期时间对象
public static final DateFromat getDateTimeInstance(int dateStyle,int timeStyle,Locale alocale)普通根据Locale得到日期时间对象

【观察DateFromat中的操作】

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

public class DateDemo03
{
    public static void main(String[] args){
        DateFormat df1=null;
        DateFormat df2=null;
        df1=DateFormat.getDateInstance();
        df2=DateFormat.getDateTimeInstance();
        System.out.println("DATE: "+df1.format(new Date()));
        System.out.println("DATETIME: "+df2.format(new Date()));
    }
}

这里写图片描述
【显示指定风格】

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

public class DateDemo04
{
    public static void main(String[] args){
        DateFormat df1=null;
        DateFormat df2=null;
        df1=DateFormat.getDateInstance(DateFormat.YEAR_FIELD,new Locale("zh","CN"));
        df2=DateFormat.getDateTimeInstance(DateFormat.YEAR_FIELD,DateFormat.ERA_FIELD,new Locale("zh","CN"));
        System.out.println("DATE: "+df1.format(new Date()));
        System.out.println("DATETIME: "+df2.format(new Date()));    
    }
}

这里写图片描述

SimpleDateFromat类

SimpleDateFormat是较为容易实现的日期转换类。
首先必须先定义出一个完成的日期转化模型,在模型中通过特定的日期标记可以将一个日期格式中的日期数字提取出来。
日期格式化模板如表

标记描述
y年,年份是4位数字,所以用yyyy表示
M年中的月份,月份是两位数字,使用MM表示
d月中的天数,天数是两位数字,使用dd表示
H一天中的小时数(24小时),小数是两位数字,使用HH表示
m小时中的分钟数,分钟是两位数字,使用mm表示
s分钟中的秒数,秒数是两位数字,使用ss表示
S毫秒数,毫秒数是三位数字,使用SSS表示

【SimpleDateFromat类中常用的方法】

方法类型描述
public SimpleDateFromat(String pattern)构造通过一个指定的模块构造对象
public Date parse(String source) throws ParseException普通将一个包含日期的字符串变为Date类型
public final String format(Date date)普通将一个Date类型按照指定格式变为String类型

【格式化日期操作】

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

public class DateDemo05
{
    public static void main(String[] args){
        String strDate="2017-12-24 20:24:30.345";
        String pat1="yyyy-MM-dd HH:mm:ss.SSS";
        String pat2="yyyy年MM月dd日HH时mm分ss秒SSS毫秒";
        SimpleDateFormat sdf1=new SimpleDateFormat(pat1);
        SimpleDateFormat sdf2=new SimpleDateFormat(pat2);
        Date d=null;
        try
        {
            d=sdf1.parse(strDate);
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
        System.out.println(sdf2.format(d));
    }
}

这里写图片描述
以上程序中,首先使用pat1将字符串中表示的日期数字提取出来,然后使用pat2将这些日期数字重新转化为新的格式表示。

注意到时间的小伙伴们可能发现了时间是平安夜。祝小伙伴们圣诞快乐。
这里写图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

aotulive

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值