java calendar date_java Date(日期类)和Calenda(日历类)

Java 关于时间日期的处理有两个基础类 Calendar 和 Date 。

Calendar 有子类 GregorianCalendar ;

Date 有子类 (java.sql.) Date, Time, Timestamp ;

Calendar类:Calendar的getInstance方法返回一个Calendar对象,其日历字段已由当前日期和时间初始化:

Calendar ca = Calendar.getInstance();//获取自身的时间对象

该对象可以调用下面的方法将日历翻到指定的一个时间:

1 void set(int year,int month,int date);

2 void set(int year,int month,int date,int hour,int minute);

3 void set(int year,int month,int date,int hour,int minute,int second);

若要调用有关年份、月份、小时、星期等信息,可以通过调用下面的方法实现:

int get(int field);

其中,参数 field 的值由 Calendar 类的静态常量决定。其中:YEAR 代表年,MONTH 代表月,HOUR 代表小时,MINUTE 代表分,如:

calendar.get(Calendar.MONTH);

如果返回值为 0 代表当前日历是一月份,如果返回 1 代表二月份,依此类推。

由 Calendar 定义的一些常用方法如下表所示:

方法

功能

abstract void add(int which,int val)

将 val 加到 which 所指定的时间或者日期中,如果需要实现减的功能,可以加一个负数。which 必须是 Calendar 类定义的字段之一,如 Calendar.HOUR

boolean after(Object calendarObj)

如果调用 Calendar 对象所包含的日期比 calendarObj 指定的对象所包含的日期晚,返回 true,否则返回 false

boolean before(Object calendarObj)

如果调用 Calendar 对象所包含的日期比 calendarObj 指定的对象所包含的日期早,返回 true,否则返回 false

final void clear()

对调用对象包含的所有时间组成部分清零

final void clear(int which)

对调用对象包含的 which 所指定的时间组成部分清零

boolean equals(Object calendarObj)

如果调用 Calendar 对象所包含的日期和 calendarObj 指定的对象所包含的日期相等,返回 true,否则返回 false

int get(int calendarField)

返回调用 Calendar 对象的一个时间组成部分的值,这个组成部分由 calendarField指定,可以被返回的组成部分如:Calendar.YEAR,Calendar.MONTH 等

static Calendar getInstance()

返回使用默认地域和时区的一个 Calendar 对象

final Date getTime()

返回一个和调用对象时间相等的 Date 对象

final boolean isSet(int which)

如果调用对象所包含的 which 指定的时间部分被设置了,返回 true,否则返回 false

final void set(int year,int month)

设置调用对象的各种日期和时间部分

final void setTime(Date d)

从 Date 对象 d 中获得日期和时间部分

void setTimeZone(TimeZone t)

设置调用对象的时区为 t 指定的那个时区

重要方法 :

public void add(int field,int amount) 根据日历规则,将指定的(有符号的)时间量添加到给定的日历字段中。

对于日期运算很便捷。

Calendar ca = Calendar.getInstance();//获取自身的时间对象

System.out.println(ca);

ca.add(Calendar.DAY_OF_MONTH, 11);//参数一Calendar字段,参数二要增加的值

System.out.println(ca);

Date 类是 Java 中的日期时间类,其构造方法比较多,下面是常用的两个:

Date():使用当前的日期和时间初始化一个对象。

Date(long date):从1970年01月01日00时(格林威治时间)开始以毫秒计算时间,计算 date 毫秒。如果运行 Java 程序的本地时区是北京时区(与格林威治时间相差 8 小时),Date date=new Date(1000);,那么对象 date 就是1970年01月01日08时00分01秒。

long

public void test1() {

Date date1 = new Date(1000*60*60*24*5);//现在时间为1970年1月1日的五天后

System.out.println(date1);//Tue Jan 06 08:00:00 CST 1970

System.out.println(date1.toString());//Tue Jan 06 08:00:00 CST 1970

long msec1=date1.getTime();

System.out.println("从1970年1月1日0时到现在共有:" + msec1 + "毫秒");//从1970年1月1日0时到现在共有:432000000毫秒

Date date2 = new Date();

System.out.println(date2);//Thu Dec 20 11:37:58 CST 2018

System.out.println(date2.toString());//Thu Dec 20 11:37:58 CST 2018

long msec2=date2.getTime();

System.out.println("从1970年1月1日0时到现在共有:" + msec2 + "毫秒");//从1970年1月1日0时到现在共有:1545277078804毫秒

}

一些比较常用的 Date 类方法:

方法

功能

boolean after(Date date)

若调用 Date 对象所包含的日期比 date 指定的对象所包含的日期晚,返回 true,否则返回 false。

boolean before(Date date)

若调用 Date 对象所包含的日期比 date 指定的对象所包含的日期早,返回 true,否则返回 false。

Object clone()

复制调用 Date 对象。

int compareTo(Date date)

比较调用对象所包含的日期和指定的对象包含的日期,若相等返回 0;若前者比后者早,返回负值;否则返回正值。

long getTime()

以毫秒数返回从 1970 年 01 月 01 日 00 时到目前的时间。

int hashCode()

返回调用对象的散列值。

void setTime(long time)

根据 time 的值,设置时间和日期。time 值从 1970 年 01 月 01 日 00 时开始计算。

String toString()

把调用的 Date 对象转换成字符串并返回结果。

public Static String valueOf(type variable)

把 variable 转换为字符串。

Date 对象表示时间的默认顺序是星期、月、日、小时、分、秒、年。若需要修改时间显示的格式可以使用“SimpleDateFormat(String pattern)”方法。

SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。

日期和时间模式

日期和时间格式由日期和时间模式 字符串指定。在日期和时间模式字符串中,未加引号的字母 'A' 到 'Z' 和 'a' 到 'z' 被解释为模式字母,用来表示日期或时间字符串元素。文本可以使用单引号 (') 引起来,以免进行解释。"''" 表示单引号。所有其他字符均不解释;只是在格式化时将它们简单复制到输出字符串,或者在解析时与输入字符串进行匹配。

定义了以下模式字母(所有其他字符 'A' 到 'Z' 和 'a' 到 'z' 都被保留):

字母

日期或时间元素

表示

示例

G

Era 标志符

AD

y

1996; 96

M

年中的月份

July; Jul; 07

w

年中的周数

27

W

月份中的周数

2

D

年中的天数

189

d

月份中的天数

10

F

月份中的星期

2

E

星期中的天数

Tuesday; Tue

a

Am/pm 标记

PM

H

一天中的小时数(0-23)

0

k

一天中的小时数(1-24)

24

K

am/pm 中的小时数(0-11)

0

h

am/pm 中的小时数(1-12)

12

m

小时中的分钟数

30

s

分钟中的秒数

55

S

毫秒数

978

z

时区

Pacific Standard Time; PST; GMT-08:00

日期格式是不同步的。建议为每个线程创建独立的格式实例。如果多个线程同时访问一个格式,则它必须是外部同步的。

Date date = new Date();

System.out.println(date);//Thu Dec 20 12:35:31 CST 2018

SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒");

System.out.println(sdf1.format(date));//2018年12月20日12时35分31秒

SimpleDateFormat sdf2 = new SimpleDateFormat("北京时间:yyyy年MM月dd日HH时mm分ss秒");

System.out.println(sdf2.format(-1000));//北京时间:1970年01月01日07时59分59秒

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值