Java中Calendar类的常用方法(对时间进行计算的类)

例子:

/****
* 传入具体日期 ,返回具体日期增加一个月。
* @param date 日期(2017-04-13)
* @return 2017-05-13
* @throws ParseException
*/
private String subMonth(String date) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date dt = sdf.parse(date);
Calendar rightNow = Calendar.getInstance();
rightNow.setTime(dt);
rightNow.add(Calendar.MONTH, 1);
Date dt1 = rightNow.getTime();
String reStr = sdf.format(dt1);
return reStr;

获取时间
// 使用默认时区和语言环境获得一个日历
Calendar cal = Calendar.getInstance();
// 赋值时年月日时分秒常用的6个值,注意月份下标从0开始,所以取月份要+1
System.out.println("年:" + cal.get(Calendar.YEAR));
System.out.println("月:" + (cal.get(Calendar.MONTH) + 1));
System.out.println("日:" + cal.get(Calendar.DAY_OF_MONTH));
System.out.println("时:" + cal.get(Calendar.HOUR_OF_DAY));
System.out.println("分:" + cal.get(Calendar.MINUTE));
System.out.println("秒:" + cal.get(Calendar.SECOND));

今天是 2018 年 2 月 12 日,运行结果:

年:2018
月:2
日:12
时:15
分:57
秒:39

设置时间
月份的下标从 0 开始,设置时同样需要注意,比如我们设置为 2 月 15 日除夕当晚的倒计时的最后一秒: 2018-02-15 23:59:59
可以这样:

Calendar cal = Calendar.getInstance();
// 如果想设置为某个日期,可以一次设置年月日时分秒,由于月份下标从0开始赋值月份要-1
// cal.set(year, month, date, hourOfDay, minute, second);
cal.set(2018, 1, 15, 23, 59, 59);

或者也可以单个字段一一设置:

// 或者6个字段分别进行设置,由于月份下标从0开始赋值月份要-1
cal.set(Calendar.YEAR, 2018);
cal.set(Calendar.MONTH, Calendar.FEBRUARY);
cal.set(Calendar.DAY_OF_MONTH, 15);
cal.set(Calendar.HOUR_OF_DAY, 23);
cal.set(Calendar.MINUTE, 59);
cal.set(Calendar.SECOND, 59);
System.out.println(cal.getTime());

打印的时间结果为:

Thu Feb 15 23:59:59 CST 2018

时间计算
add方法:
比如在除夕当晚最后一秒,add 一秒:

Calendar cal = Calendar.getInstance();
System.out.println(cal.getTime());
cal.set(2018, 1, 15, 23, 59, 59);
cal.add(Calendar.SECOND, 1);
System.out.println(cal.getTime());

打印时间结果如下,日期会自动进入下一天:

Thu Feb 15 23:59:59 CST 2018
Fri Feb 16 00:00:00 CST 2018

再比如 1 月 31 号的时候,月份加一,会出现怎样结果:

Calendar cal = Calendar.getInstance();
cal.set(2018, 1, 31, 8, 0, 0);
System.out.println(cal.getTime());
cal.add(Calendar.MONTH, 1);
System.out.println(cal.getTime());

运行结果:

Wed Jan 31 08:00:00 CST 2018
Wed Feb 28 08:00:00 CST 2018

原文地址:https://www.cnblogs.com/mark5/p/11320348.html

时间: 2024-11-05 13:31:13

Java中Calendar类的常用方法(对时间进行计算的类)的相关文章

Java中Calendar/SimpleDateFormat/Date常用方法总结

1 //获取当前时刻yyyy-MM-dd HH:mm:ss 2 Calendar calendar = Calendar.getInstance(); 3 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 设置日期格式 4 String now = sdf.format(calendar.getTime()); 5 System.out.println(now); 6 7 //获取当前时刻yyyy

转- 关于时间,日期,星期,月份的算法(Java中Calendar的使用方法)

package cn.outofmemory.codes.Date; import java.util.Calendar; import java.util.Date; public class CalendarDemo { public static void main(String[] args) { Calendar calendar=Calendar.getInstance(); calendar.setTime(new Date()); System.out.println("现在时间

关于时间,日期,星期,月份的算法(Java中Calendar的使用方法)(一)

package cn.outofmemory.codes.Date; import java.util.Calendar; import java.util.Date; public class CalendarDemo { public static void main(String[] args) { Calendar calendar=Calendar.getInstance(); calendar.setTime(new Date()); System.out.println("现在时间

关于时间,日期,星期,月份的算法(Java中Calendar的用法)(一)

package cn.outofmemory.codes.Date; import java.util.Calendar; import java.util.Date; public class CalendarDemo { public static void main(String[] args) { Calendar calendar=Calendar.getInstance(); calendar.setTime(new Date()); System.out.println("如今时间

Java中Calendar.DAY_OF_WEEK需要减一的原因

Java中对日期的处理需要用到Calendar类,其中有几个方法在使用时需要新手注意. 1. 在获取月份时,Calendar.MONTH + 1 的原因(Java中Calendar.MONTH返回的数值其实是当前月距离第一个月有多少个月份的数值)Java中的月份遵循了罗马历中的规则:当时一年中的月份数量是不固定的,第一个月是JANUARY.而Java中Calendar.MONTH返回的数值其实是当前月距离第一个月有多少个月份的数值,JANUARY在Java中返回"0",所以我们需要+1

Java中Calendar工具类的一些常用方法

一:字段和方法的信息YEAR 字段:public static final int YEAR ;指示年的 get 和 set 的字段数字.这是一个特定于日历的值:get 方法:public int get(int field) ;返回给定日历字段的值.在 lenient 模式下,所有日历字段都被标准化.在 non-lenient 模式下,所有日历字段都是经过验证的,如果任何日历字段有超出范围的值,则此方法抛出一个异常.标准化和验证都是通过 complete() 方法处理的,这个过程与日历系统有关

java中Calendar类

1.测试代码: 1 package com; 2 3 import java.text.SimpleDateFormat; 4 import java.util.Calendar; 5 import java.util.Date; 6 7 /** 8 * Created by huyanxia on 2017/9/30. 9 */ 10 public class calendarTest { 11 public static void main(String[] args) { 12 Calen

转——JAVA中calendar,date,string 的相互转换和详细用法

package cn.outofmemory.codes.Date; import java.util.Calendar; import java.util.Date; public class CalendarDemo { public static void main(String[] args) { Calendar calendar=Calendar.getInstance(); calendar.setTime(new Date()); System.out.println("现在时间

Java 中Calendar、Date、SimpleDateFormat学习总结

在之前的项目中,经常会遇到Calendar,Date的一些操作时间的类,并且总会遇到时间日期之间的格式转化问题,虽然做完了但是总是忘记,记不清楚,每次还都要查找资料.今天总结一下,加深印象. Calendar Calendar是java.util 包下面的一个抽象类,它为特定瞬间与一组诸如YEAR.MONTH.DAY_OF_MONTH.HOUR等日历字段之间的转换提供了一些方法,并未操作日历字段(例如获得下星期的日期)提供了一些方法.瞬间值可用毫秒值来表示,它是距格林威治标准时间 1970 年1

java中Calendar日期对象

转帖网上简介 Calendar c = Calendar.getInstance();//创建实例 默认是当前时刻 c.get(Calendar.YEAR); c.get(Calendar.MONTH); c.get(Calendar.DATE);//获取年,月,日 当然时分秒也可以 注意这里的月份比较特殊 从0开始 c.get(Calendar.DAY_OF_WEEK);//获取当前日期在星期中的第几天 从1-7对应 日-六 c.getActualMaximum(Calendar.DAY_OF