Date类、DateFormat抽象类、SimpleDateFormat类和Calendar类

一、Date类

1.Date类时Java里面进行日期操作的常用类,Date类用来表示特定的瞬间,精确到毫秒。
2.常用方法
public boolean after(Date when)
测试此日期是否在指定日期之后

public boolean before(Date when)
测试此日期是否在指定日期之前

getTime()方法返回自1970年1月1日00:00:00 GMT以来此Date对象表示的毫秒数。

示例
简单的性能测试:监控一段代码运行所需要的时间。

/**
* Date类的getTime()方法返回Date对象自1970年1月1日00:00:00 GMT以来的毫秒数。
*/
import java.util.*;
public class DateTest1{
    public static void main(String[] args){
        long time1 = new Date().getTime();//获取此时的时间
        int sum = 0;
        for(int i = 1; i <= 100000000; i++){
            sum += i;
        }

        long time2 = new Date().getTime();//获取此时的时间
        System.out.println(time1);
        System.out.println(time2);
        System.out.println(time2 - time1);

        Date d = new Date();
        System.out.println(d);
    }
}

二、DateFormat类和SimpleDateFormat类

Date对象表示时间的默认顺序是星期、月、日、小时、秒、年,例如

Mon June 8 21:01:01 CST 2016

我们如果希望用某个习惯的格式来输出时间,例如时间的顺序:年、月、日、星期。可以用java.text包中的DateFormat类,是日期/ 时间格式化子类的抽象类。日期/时间格式化子类(如SimpleDateFormat)允许进行格式化(即日期转换成文本)、解析(文本转换成日期)和标准化。

1.日期和时间模式

日期和时间格式由日期和时间模式字符串指定。A-Z、a-z被解释成模式字母,文本用单引号引起来,以免进行解释。其他字符均不解释。
Java中定义了以下模式字母(其他字母都被保留)


G  Era标志符  例:AD
y  年
M  年中的月份
w  年中的周数
W  月份中的周数
D  年中的天数
d  月份中的天数
F  月份中的星期
E  星期中的天数
a  am/pm标记  例:PM
H  一天中的小时数(0-23)
k  一天中的小时数(1-24)
K  am/pm中的小时数(0-11)
h  am/pm中的小时数(1-12)
m  小时中的分钟数
s  分钟中的秒数
S  毫秒数
z  时区  例:Pacific Standard Time;PST;GMT-08:00
Z  时区  例:-0800

2.示例

/**
* DateFormat 和SimpleDateFormat
* 常用方法parse()和format()
*/
import java.util.Date;
import java.text.ParseException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
public class DateMethods{
    public static void main(String[] args){
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
        Date d = new Date();

        String str = df.format(d);//转化为我们熟悉的时间格式,解析文本
        System.out.println(d);
        System.out.println(str);

        try{
            Date d2 = df.parse(str);//将一个Date格式化为日期/时间字符串
            Date d3 = df.parse("1993-9-31 09:09:01 999");
            System.out.println(d2);
            System.out.println(d3);
        }catch(ParseException e){   //表示解析时出现意外错误
            e.printStackTrace();
        }
    }
}

3.说明

JDK文档上的Date的毫秒值,是相对于格林威治时间1970年1月1日0点,但实际测试,这个Date跟时区相关,在中国这个基准值是1970年1月1日8点。示例如下

/**
* 获得基准时间,Date的基准时间跟时区有关,中国的基准值是
* 1970年1月1日8点
*/
import java.text.*;
import java.util.*;
public class ReferenceTime{
    public static void main(String[] args){
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
        Date d = new Date(0L);//把时间设为0,表示到基准时间

        String str = df.format(d);
        System.out.println(str);
    }
}

三、Calendar类

java.util包中的Calendar类是java里另外一个常用的日期处理的类,是一个抽象类。

1.初始化

Calendar c = Calendar.getInstance();

2.使用Calendar对日期进行部分析取和进行日期运算

示例

/**
* java.util包中的Calendar类
*/
import java.util.*;
public class CalendarTest{
    public static void main(String[] args){
        Calendar c = Calendar.getInstance();//通过静态方法getInstance()来获取Calendar实例
        int year = c.get(Calendar.YEAR);//get()返回给定日历字段的值
        int month = c.get(Calendar.MONTH) + 1;//MONTH比较特殊,从0开始,也就是0表示1月
        int day = c.get(Calendar.DAY_OF_MONTH);
        System.out.println("今天是 " + year + "年" + month + "月" + day + "日");

        //add方法为给定的日历字段添加或减去指定的时间
        c.add(Calendar.DATE,5);//当前日期加5天
        c.add(Calendar.DATE,-5);//当前日期加5天
        System.out.println("今天是" + c.get(Calendar.DAY_OF_MONTH) + "号");
    }
}

3.为Calendar设置初始值

/**
* Calendar设置初始值
*/
import java.util.*;
public class CalendarOriginalValue{
    public static void main(String[] args){
        Calendar c = Calendar.getInstance();
        c.setTimeInMillis(2234567890000L);//该方法作用是用long值设置Calendar的当前时间值

        int year = c.get(Calendar.YEAR);
        int month = c.get(Calendar.MONTH) + 1;
        int day = c.get(Calendar.DAY_OF_MONTH);
        System.out.println(year + "." + month + "." + day);
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Date类: Date类是Java中的一个基础类,它代表了一个日期和时间。Date类通常用于获取当前日期和时间,或者用于存储一个特定的日期和时间。它提供了一些方法来获取日期和时间的各个部分,如年、月、日、小时、分钟、秒等。 DateFormat类: DateFormat类是Java中用于格式化或解析日期和时间的类。它通常用于将Date对象转换为可读的字符串格式,或者从字符串中解析出日期和时间。DateFormat类提供了一些静态方法,可以设置日期和时间的格式,例如日期应显示月、日还是年,是否需要显示时间等。 SimpleDateFormat类: SimpleDateFormat类是DateFormat的一个子类,它提供了一些更方便的方法来格式化和解析日期和时间。与DateFormat类相比,SimpleDateFormat类使用起来更简单,更容易使用。它可以接受用户定义的格式字符串,这使得用户可以根据自己的需要自定义日期和时间的显示格式。 Calendar类: Calendar类是一个抽象类,用于处理日历相关的任务。它提供了表示特定日期和时间的对象,并且允许进行各种日历操作,如添加月份、年份等。Calendar类可以与Date类一起使用,以便获取日期的各个部分或执行日历操作。 这些类的主要用途如下: * Date类:获取和处理日期和时间的基本工具。 * DateFormat类和SimpleDateFormat类:用于格式化和解析日期和时间的工具。 * Calendar类:用于处理日历相关的任务,例如添加月份、年份等。 在Java中,这些类通常一起使用,以便更方便地处理日期和时间。例如,可以使用DateCalendar类来获取特定日期或时间,然后使用DateFormatSimpleDateFormat类将其转换为可读的字符串格式。也可以使用Calendar类进行日历操作,并使用DateDateFormat类将结果存储为Date对象或字符串。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值