java 日历类_Java Calendar类

首页 > 基础教程 > 常用类 > Calendar类

Java Calendar类

Java Calendar 是时间操作类,Calendar 抽象类定义了足够的方法,在某一特定的瞬间或日历上,提供年、月、日、小时之间的转换提供方法。

格式

Letter

Date or Time Component

Presentation

Examples

G

Era designator

Text

AD

y

Year

Year

1996; 96

Y

Week year

Year

2009; 09

M

Month in year (context sensitive)

Month

July; Jul; 07

L

Month in year (standalone form)

Month

July; Jul; 07

w

Week in year

Number

27

W

Week in month

Number

2

D

Day in year

Number

189

d

Day in month

Number

10

F

Day of week in month

Number

2

E

Day name in week

Text

Tuesday; Tue

u

Day number of week (1 = Monday, ..., 7 = Sunday)

Number

1

a

Am/pm marker

Text

PM

H

Hour in day (0-23)

Number

0

k

Hour in day (1-24)

Number

24

K

Hour in am/pm (0-11)

Number

0

h

Hour in am/pm (1-12)

Number

12

m

Minute in hour

Number

30

s

Second in minute

Number

55

S

Millisecond

Number

978

z

Time zone

General time zone

Pacific Standard Time; PST; GMT-08:00

Z

Time zone

RFC 822 time zone

-0800

X

Time zone

ISO 8601 time zone

-08; -0800; -08:00

Calendar类注意事项

Calendar 的 month 从 0 开始,也就是全年 12 个月由 0 ~ 11 进行表示。

而 Calendar.DAY_OF_WEEK 定义和值如下:

Calendar.SUNDAY = 1

Calendar.MONDAY = 2

Calendar.TUESDAY = 3

Calendar.WEDNESDAY = 4

Calendar.THURSDAY = 5

Calendar.FRIDAY = 6

Calendar.SATURDAY = 7

取值

取值当天

public String getThisToday(){

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

Calendar cal = Calendar.getInstance();

cal.set(Calendar.HOUR_OF_DAY,0);

cal.set(Calendar.MINUTE, 0);

cal.set(Calendar.SECOND,0);

String start = sdf.format(cal.getTime());

cal.set(Calendar.HOUR_OF_DAY,23);

cal.set(Calendar.MINUTE, 59);

cal.set(Calendar.SECOND,59);

String end = sdf.format(cal.getTime());

return start+"|"+end;

}

取值本周

public String getThisWeekDate(){

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

Calendar ca = Calendar.getInstance();

ca.setFirstDayOfWeek(Calendar.MONDAY);

ca.set(Calendar.DAY_OF_WEEK,Calendar.SUNDAY);

ca.set(ca.get(Calendar.YEAR), ca.get(Calendar.MONTH),ca.get(Calendar.DATE),23,59,59);

String end = sdf.format(ca.getTime());

ca.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);

ca.set(Calendar.HOUR_OF_DAY,0);

ca.set(Calendar.MINUTE, 0);

ca.set(Calendar.SECOND,0);

String start = sdf.format(ca.getTime());

return start+"|"+end;

}

取值本月日期段

public String getThisMonthDate(){

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

Calendar cc2 = Calendar.getInstance();

int maxMonthDay = cc2.getActualMaximum(Calendar.DAY_OF_MONTH);

cc2.set(cc2.get(Calendar.YEAR), cc2.get(Calendar.MONTH),maxMonthDay,23,59,59);

String end = sdf.format(cc2.getTime());

cc2.set(cc2.get(Calendar.YEAR), cc2.get(Calendar.MONTH),1,0,0,0);

String start = sdf.format(cc2.getTime());

return start+"|"+end;

}

实例

public static void main(String[] args)

{

// 字符串转换日期格式

DateFormat fmtDateTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

// 得到日期格式对象

Date date = fmtDateTime.parse(strDateMake);

// 完整显示日期时间

String str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS")).format(new Date());

System.out.println(str);

// 创建 Calendar 对象

Calendar calendar = Calendar.getInstance();

// 初始化 Calendar 对象,但并不必要,除非需要重置时间

calendar.setTime(new Date());

// setTime 类似上面一行

// Date date = new Date();

// calendar.setTime(date);

// 显示年份

int year = calendar.get(Calendar.YEAR);

System.out.println("YEAR is = " + String.valueOf(year));

// 显示月份 (从0开始, 实际显示要加一)

int MONTH = calendar.get(Calendar.MONTH);

System.out.println("MONTH is = " + (MONTH + 1));

// 今年的第 N 天

int DAY_OF_YEAR = calendar.get(Calendar.DAY_OF_YEAR);

System.out.println("DAY_OF_YEAR is = " + DAY_OF_YEAR);

// 本月第 N 天

int DAY_OF_MONTH = calendar.get(Calendar.DAY_OF_MONTH);

System.out.println("DAY_OF_MONTH = " + String.valueOf(DAY_OF_MONTH));

// 3小时以后

calendar.add(Calendar.HOUR_OF_DAY, 3);

int HOUR_OF_DAY = calendar.get(Calendar.HOUR_OF_DAY);

System.out.println("HOUR_OF_DAY + 3 = " + HOUR_OF_DAY);

// 当前分钟数

int MINUTE = calendar.get(Calendar.MINUTE);

System.out.println("MINUTE = " + MINUTE);

// 15 分钟以后

calendar.add(Calendar.MINUTE, 15);

MINUTE = calendar.get(Calendar.MINUTE);

System.out.println("MINUTE + 15 = " + MINUTE);

// 30分钟前

calendar.add(Calendar.MINUTE, -30);

MINUTE = calendar.get(Calendar.MINUTE);

System.out.println("MINUTE - 30 = " + MINUTE);

// 格式化显示

str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS")).format(calendar.getTime());

System.out.println(str);

// 重置 Calendar 显示当前时间

calendar.setTime(new Date());

str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS")).format(calendar.getTime());

System.out.println(str);

// 创建一个 Calendar 用于比较时间

Calendar calendarNew = Calendar.getInstance();

// 设定为 5 小时以前,后者大,显示 -1

calendarNew.add(Calendar.HOUR, -5);

System.out.println("时间比较:" + calendarNew.compareTo(calendar));

// 设定7小时以后,前者大,显示 1

calendarNew.add(Calendar.HOUR, +7);

System.out.println("时间比较:" + calendarNew.compareTo(calendar));

// 退回 2 小时,时间相同,显示 0

calendarNew.add(Calendar.HOUR, -2);

System.out.println("时间比较:" + calendarNew.compareTo(calendar));

}

版权声明:本文为JAVASCHOOL原创文章,未经本站允许不得转载。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值