Java的calendar类用法

简介: YEAR  这是哪年 MONTH  这是月(从0开始) WEEK_OF_YEAR 今年的第几星期 WEEK_OF_MONTH 这个月的第几星期(从一开始) DATE  今天几号 DAY_OF_MONTH  这个月的第几天 DAY_OF_YEAR   这一年的第几天 DAY_OF_WEEK   这周周几(从日开始计算,从1计算) DAY_OF_WEEK_IN_MONTH 第几

YEAR  这是哪年
MONTH  这是月(从0开始)
WEEK_OF_YEAR 今年的第几星期
WEEK_OF_MONTH 这个月的第几星期(从一开始)
DATE  今天几号
DAY_OF_MONTH  这个月的第几天
DAY_OF_YEAR   这一年的第几天
DAY_OF_WEEK   这周周几(从日开始计算,从1计算)
DAY_OF_WEEK_IN_MONTH 第几周(从第一天开始算一周)

AM_PM  上午还是下午0为上午,1为下午
HOUR 12小时制几点
HOUR_OF_DAY  24小时制几点
MINUTE  多少分
SECOND  多少秒
MILLISECOND  多少毫秒
ZONE_OFFSET  时区
DST_OFFSET

 

 

 

 Date d=new Date();  
 SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");  
 System.out.println("今天的日期:"+df.format(d));  
 System.out.println("两天前的日期:" + df.format(new Date(d.getTime() - (long)2 * 24 * 60 * 60 * 1000))); 
   System.out.println("三天后的日期:" + df.format(new Date(d.getTime() + (long)3 * 24 * 60 * 60 * 1000)));

 
 
 
JAVA处理日期时间常用方法:

1.java.util.Calendar
Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。

例:


Java代码Calendar cal = Calendar.getInstance();//使用默认时区和语言环境获得一个日历。   
cal.add(Calendar.DAY_OF_MONTH, -1);//取当前日期的前一天.   
cal.add(Calendar.DAY_OF_MONTH, +1);//取当前日期的后一天.   
//通过格式化输出日期   
java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-dd");   
System.out.println("Today is:"+format.format(Calendar.getInstance().getTime()));   
System.out.println("yesterday is:"+format.format(cal.getTime()));  
得到2007-12-25日期:
 
Java代码
Calendar calendar = new GregorianCalendar(2007, 11, 25,0,0,0);    Date date = calendar.getTime();   
System.out.println("2007 Christmas is:"+format.format(date));  

java月份是从0-11,月份设置时要减1.

GregorianCalendar构造方法参数依次为:年,月-1,日,时,分,秒.

取日期的部分:


Java代码
int year =calendar.get(Calendar.YEAR);    int month=calendar.get(Calendar.MONTH)+1;

int day =calendar.get(Calendar.DAY_OF_MONTH);   
int hour =calendar.get(Calendar.HOUR_OF_DAY);   
int minute =calendar.get(Calendar.MINUTE);   
int seconds =calendar.get(Calendar.SECOND);  


取月份要加1.

判断当前月份的最大天数:


Java代码Calendar cal = Calendar.getInstance();   
int day=cal.getActualMaximum(Calendar.DAY_OF_MONTH);   
System.out.println(day);  


2.java.util.Date


Java代码java.util.Date today=new java.util.Date();   
System.out.println("Today is "+formats.format(today));  


取当月的第一天:


Java代码java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-01");   
java.util.Date firstDay=new java.util.Date();   
System.out.println("the month first day is "+formats.format(firstDay));  

取当月的最后一天:


Java代码   
Calendar cal = Calendar.getInstance();   
int maxDay=cals.getActualMaximum(Calendar.DAY_OF_MONTH);   
java.text.Format formatter3=new java.text.SimpleDateFormat("yyyy-MM-"+maxDay);   
System.out.println(formatter3.format(cal.getTime()));  


求两个日期之间相隔的天数:


Java代码java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-dd");   
java.util.Date beginDate= format.parse("2007-12-24");   
java.util.Date endDate= format.parse("2007-12-25");   
long day=(date.getTime()-mydate.getTime())/(24*60*60*1000);   
System.out.println("相隔的天数="+day);  

一年前的日期:


Java代码java.text.Format formatter=new java.text.SimpleDateFormat("yyyy-MM-dd");   
java.util.Date todayDate=new java.util.Date();   
long beforeTime=(todayDate.getTime()/1000)-60*60*24*365;   
todayDate.setTime(beforeTime*1000);   
String beforeDate=formatter.format(todayDate);   
System.out.println(beforeDate);  

一年后的日期:


Java代码java.text.Format formatter=new java.text.SimpleDateFormat("yyyy-MM-dd");   
java.util.Date todayDate=new java.util.Date();   
long afterTime=(todayDate.getTime()/1000)+60*60*24*365;   
todayDate.setTime(afterTime*1000);   
String afterDate=formatter.format(todayDate);   
System.out.println(afterDate);  

求10小时后的时间


Java代码java.util.Calendar Cal=java.util.Calendar.getInstance();   
Cal.setTime(dateOper);   
Cal.add(java.util.Calendar.HOUR_OF_DAY,10);   
System.out.println("date:"+forma.format(Cal.getTime()));  

求10小时前的时间


Java代码java.util.Calendar Cal=java.util.Calendar.getInstance();   
Cal.setTime(dateOper);   
Cal.add(java.util.Calendar.HOUR_OF_DAY,-10);   
System.out.println("date:"+forma.format(Cal.getTime()));  

3.java.sql.Date
继承自java.util.Date,是操作数据库用的日期类型


Java代码java.sql.Date sqlDate = new java.sql.Date(java.sql.Date.valueOf("2007-12-25").getTime());

 

日期比较:简单的比较可以以字符串的形式直接比较,也可使用
java.sql.Date.valueOf("2007-03-08").compareTo(java.sql.Date.valueOf("2007-03-18"))方式来比较日期的大小.也可使用java.util.Date.after(java.util.Date)来比较.

相差时间:
long difference=c2.getTimeInMillis()-c1.getTimeInMillis();
相差天数:long day=difference/(3600*24*1000)
相差小时:long hour=difference/(3600*1000)
相差分钟:long minute=difference/(60*1000)
相差秒: long second=difference/1000

补充:


Java代码DateFormat df=new SimpleDateFormat("yyyy-MM-dd EE hh:mm:ss");   
System.out.println(df.format(new Date()));   
Date date = new Date();   
DateFormat shortDate=DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT);   
DateFormat mediumDate =DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM);   
DateFormat longDate =DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG);   
DateFormat fullDate =DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL);   
 
system.out.println(shortDate.format(date));   
System.out.println(mediumDate.format(date));   
System.out.println(longDate.format(date));   
System.out.println(fullDate.format(date));   
 
08-4-15 下午3:24   
2008-4-15 15:24:31   
2008年4月15日 下午03时24分31秒   
2008年4月15日 星期二 下午03时24分31秒CST   
 
Calendar c = Calendar.getInstance();
c.add(Calendar.MONTH, 1); // 目前时间加1个月   
System.out.println(df.format(c.getTime()));   
c.add(Calendar.HOUR, 3); // 目前时间加3小时   
System.out.println(df.format(c.getTime()));   
c.add(Calendar.YEAR, -2); // 目前时间减2年   
System.out.println(df.format(c.getTime()));
c.add(Calendar.DAY_OF_WEEK, 7); // 目前的时间加7天   
System.out.println(df.format(c.getTime())); 

目录
相关文章
|
11天前
|
Java Linux
java基础(3)安装好JDK后使用javac.exe编译java文件、java.exe运行编译好的类
本文介绍了如何在安装JDK后使用`javac.exe`编译Java文件,以及使用`java.exe`运行编译好的类文件。涵盖了JDK的安装、环境变量配置、编写Java程序、使用命令行编译和运行程序的步骤,并提供了解决中文乱码的方法。
28 1
|
11天前
|
Java 索引
java基础(13)String类
本文介绍了Java中String类的多种操作方法,包括字符串拼接、获取长度、去除空格、替换、截取、分割、比较和查找字符等。
24 0
java基础(13)String类
|
4天前
|
Java API
Java的日期类都是怎么用的
【10月更文挑战第1天】本文介绍了 Java 中处理日期和时间的三个主要类:`java.util.Date`、`java.util.Calendar` 和 `java.time` 包下的新 API。`Date` 类用于表示精确到毫秒的瞬间,可通过时间戳创建或获取当前日期;`Calendar` 抽象类提供丰富的日期操作方法,如获取年月日及时区转换;`java.time` 包中的 `LocalDate`、`LocalTime`、`LocalDateTime` 和 `ZonedDateTime` 等类则提供了更为现代和灵活的日期时间处理方式,支持时区和复杂的时间计算。
26 14
|
12天前
|
存储 Java
Java编程中的对象和类
【8月更文挑战第55天】在Java的世界中,“对象”与“类”是构建一切的基础。就像乐高积木一样,类定义了形状和结构,而对象则是根据这些设计拼装出来的具体作品。本篇文章将通过一个简单的例子,展示如何从零开始创建一个类,并利用它来制作我们的第一个Java对象。准备好让你的编程之旅起飞了吗?让我们一起来探索这个神奇的过程!
25 10
|
8天前
|
安全 Java API
时间日期API(Date,SimpleDateFormat,Calendar)+java8新增日期API (LocalTime,LocalDate,LocalDateTime)
这篇文章介绍了Java中处理日期和时间的API,包括旧的日期API(Date、SimpleDateFormat、Calendar)和Java 8引入的新日期API(LocalTime、LocalDate、LocalDateTime)。文章详细解释了这些类/接口的方法和用途,并通过代码示例展示了如何使用它们。此外,还讨论了新旧API的区别,新API的不可变性和线程安全性,以及它们提供的操作日期时间的灵活性和简洁性。
|
9天前
|
安全 Java 编译器
java访问类字段
java访问类字段
|
11天前
|
Java
java的class类
java的class类
18 5
|
17天前
|
Java
Java 正则表达式高级用法
Java 中的正则表达式是强大的文本处理工具,用于搜索、匹配、替换和分割字符串。`java.util.regex` 包提供了 `Pattern` 和 `Matcher` 类来高效处理正则表达式。本文介绍了高级用法,包括使用 `Pattern` 和 `Matcher` 进行匹配、断言(如正向和负向前瞻/后顾)、捕获组与命名组、替换操作、分割字符串、修饰符(如忽略大小写和多行模式)及 Unicode 支持。通过这些功能,可以高效地处理复杂文本数据。
|
17天前
|
存储 Java 数据处理
Java 数组的高级用法
在 Java 中,数组不仅可以存储同类型的数据,还支持多种高级用法,如多维数组(常用于矩阵)、动态创建数组、克隆数组、使用 `java.util.Arrays` 进行排序和搜索、与集合相互转换、增强 for 循环遍历、匿名数组传递以及利用 `Arrays.equals()` 比较数组内容。这些技巧能提升代码的灵活性和可读性,适用于更复杂的数据处理场景。
|
11天前
|
Java 数据处理
Java Scanner 类详解
`Scanner` 类是 Java 中 `java.util` 包提供的强大工具,用于从多种输入源(如键盘、文件、字符串)读取数据。本文详细介绍如何创建 `Scanner` 对象并使用其常用方法(如 `next()`, `nextInt()`, `nextLine()` 等)。通过示例代码展示如何从标准输入、字符串及文件中读取数据,并进行输入验证。使用时需注意关闭 `Scanner` 以释放资源,并确保输入类型匹配,避免异常。掌握 `Scanner` 可显著提升程序的数据处理能力。
下一篇
无影云桌面