java中的日期处理类总结:Date/Calendar/GregorianCalendar/DateFormat/SimpleDateFormat类
网上转载的,地址已经忘记了,在此感谢作者的分享。
1、Date类(该类现在很少用了)
Date类对象的创建:
创建一个当前时间
//默认是创建一个代表系统当前日期的Date对象
Date d = new Date();
创建一个我们指定的时间的Date对象:
下面是使用带参数的构造方法,可以构造指定日期的Date类对象,Date类中年份的参数应该是实际需要代表的年份减去1900,实际需要代表的月份减去1以后的值。
//创建一个代表2009年6月12号的Date对象
Date d1 = new Date(2009-1900, 6-1, 12); (注意参数的设置啊!)
正确获得一个date对象所包含的信息
1. Date d2 = new Date(2009-1900, 6-1, 12); 2. //获得年份 (注意年份要加上1900,这样才是日期对象d2所代表的年份) 3. int year = d2.getYear() + 1900; 4. //获得月份 (注意月份要加1,这样才是日期对象d2所代表的月份) 5. int month = d2.getMonth() + 1; 6. //获得日期 7. int date = d2.getDate(); 8. //获得小时 9. int hour = d2.getHours(); 10. //获得分钟 11. int minute = d2.getMinutes(); 12. //获得秒 13. int second = d2.getSeconds(); 14. //获得星期 (注意:0代表星期日、1代表星期1、2代表星期2,其他的一次类推了) 15. int day = d2.getDay();
运行结果:
年份:2009
月份:6
日期:12
小时:0 //不设置默认是0
分钟:0 //不设置默认是0
秒:0 //不设置默认是0
星期:5 //09-6-12今天就是星期5,又是一个星期天哦
2、Calendar类
Calendar类的功能要比Date类强大很多,而且在实现方式上也比Date类要复杂一些
Calendar类对象的创建
Calendar类是一个抽象类,在实际使用时实现特定的子类的对象。由于Calendar类是抽象类,且Calendar类的构造方法是 protected的,所以无法使用Calendar类的构造方法来创建对象,API中提供了getInstance方法用来创建对象。
创建一个代表系统当前日期的Calendar对象
Calendar c = Calendar.getInstance();//默认是当前日期
创建一个指定日期的Calendar对象
使用Calendar类代表特定的时间,需要首先创建一个Calendar的对象,然后再设定该对象中的年月日参数来完成。
//创建一个代表2009年6月12日的Calendar对象
Calendar c1 = Calendar.getInstance();
c1.set(2009, 6 - 1, 12);
Calendar类对象字段类型
Calendar类中用一下这些常量表示不同的意义,jdk内的很多类其实都是采用的这种思想
Calendar.YEAR——年份
Calendar.MONTH——月份
Calendar.DATE——日期
Calendar.DAY_OF_MONTH——日期,和上面的字段意义完全相同
Calendar.HOUR——12小时制的小时
Calendar.HOUR_OF_DAY——24小时制的小时
Calendar.MINUTE——分钟
Calendar.SECOND——秒
Calendar.DAY_OF_WEEK——星期几
Calendar类对象信息的设置与获得
Calendar类对象信息的设置
Set设置
如:Calendar c1 = Calendar.getInstance();
调用:public final void set(int year,int month,int date)
c1.set(2009, 6 - 1, 12);//把Calendar对象c1的年月日分别设这为:2009、6、12
利用字段类型设置
如果只设定某个字段,例如日期的值,则可以使用如下set方法:
调用:public void set(int field,int value)
//把 c1对象代表的日期设置为10号,其它所有的数值会被重新计算
c1.set(Calendar.DATE,10);
//把c1对象代表的年份设置为2008年,其他的所有数值会被重新计算
c1.set(Calendar.YEAR,2008);
其他字段属性set的意义以此类推
Add设置
Calendar c1 = Calendar.getInstance();
//把c1对象的日期加上10,也就是c1所表的日期的10天后的日期,其它所有的数值会被重新计算
c1.add(Calendar.DATE, 10);
//把c1对象的日期加上10,也就是c1所表的日期的10天前的日期,其它所有的数值会被重新计算
c1.add(Calendar.DATE, -10);
其他字段属性的add的意义以此类推
Calendar类对象信息的获得
Calendar c1 = Calendar.getInstance(); // 获得年份 int year = c1.get(Calendar.YEAR); // 获得月份 int month = c1.get(Calendar.MONTH) + 1; // 获得日期 int date = c1.get(Calendar.DATE); // 获得小时 int hour = c1.get(Calendar.HOUR_OF_DAY); // 获得分钟 int minute = c1.get(Calendar.MINUTE); // 获得秒 int second = c1.get(Calendar.SECOND); // 获得星期几(注意(这个与Date类是不同的):1代表星期日、2代表星期1、3代表星期二,以此类推) int day = c1.get(Calendar.DAY_OF_WEEK);
3、GregorianCalendar类
GregorianCalendar 是 Calendar 的一个具体子类,提供了世界上大多数国家使用的标准日历系统。
GregorianCalendar类对象的创建
GregorianCalendar有自己的构造方法,而其父类Calendar没有公开的构造方法哦。
GregorianCalendar()
在具有默认语言环境的默认时区内使用当前时间构造一个默认的 GregorianCalendar。
GregorianCalendar(int year, int month, int dayOfMonth)
在具有默认语言环境的默认时区内构造一个带有给定日期设置的 GregorianCalendar。
GregorianCalendar(int year, int month, int dayOfMonth, int hourOfDay, int minute)
为具有默认语言环境的默认时区构造一个具有给定日期和时间设置的 GregorianCalendar。
GregorianCalendar(int year, int month, int dayOfMonth, int hourOfDay, int minute, int second)
为具有默认语言环境的默认时区构造一个具有给定日期和时间设置的 GregorianCalendar。
创建一个代表当前日期的GregorianCalendar对象
GregorianCalendar gc = new GregorianCalendar();
//创建一个代表2009年6月12日的GregorianCalendar对象(注意参数设置哦,与其父类是一样的哦,月份要减去1)
GregorianCalendar gc = new GregorianCalendar(2009,6-1,12);
字段属性什么的都是随其父Calendar了,呵
另外:GregorianCalendar有下面一个方法:
isLeapYear(int year) 确定给定的年份是否为闰年
4、DateFormat类
DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并分析日期或时间。日期/时间格式化子类(如 SimpleDateFormat)允许进行格式化(也就是日期 -> 文本)、分析(文本-> 日期)和标准化。将日期表示为 Date 对象,或者表示为从 GMT(格林尼治标准时间)1970 年,1 月 1 日 00:00:00 这一刻开始的毫秒数。
5、SimpleDateFormat类
public class SimpleDateFormat extends DateFormat
SimpleDateFormat 是一个以与语言环境相关的方式来格式化和分析日期的具体类。它允许进行格式化(日期 -> 文本)、分析(文本 -> 日期)和规范化。
所以本类可以实现:String 到 Date Date到String的互转,如下:
1. //注意构造函数中是SimpleDateFormat类解析日期的模式,大小写代表的意义完全不一样哦 2. SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); 3. //日期到字符串的转换 4. String today = df.format(new Date()); 5. //字符串到日期的转换 6. Date date = df.parse("2009-06-12 02:06:37"); 7. System.out.println(df.format(new Date()));
6、日期类对象之间的互转
Date类对象与long型时间的互转
1. //将Date类的对象转换为long型时间 2. Date d= new Date(); 3. //使用对象的getTime()方法完成 4. long dLong = d.getTime(); 5. 6. //将long型时间转换为Date类的对象 7. long time = 1290876532190L; 8. //使用Date的构造方法完成 9. Date d2 = new Date(time);
Calendar对象和long型时间之间的互转
1. // 将Calendar对象转换为相对时间 2. Calendar c = Calendar.getInstance(); 3. long t1 = c.getTimeInMillis(); 4. 5. // 将相对时间转换为Calendar对象 6. Calendar c1 = Calendar.getInstance(); 7. long t = 1252785271098L; 8. c1.setTimeInMillis(t1);
Calendar对象和Date对象之间的互转
1. // 将Calendar对象转换为相对时间 2. Calendar c = Calendar.getInstance(); 3. Date d = c.getTime(); 4. 5. // 将相对时间转换为Calendar对象 6. Calendar c1 = Calendar.getInstance(); 7. Date d1 = new Date(); 8. //通过setTime()方法后,日历c1所表示的日期就d1的日期 9. c1.setTime(d1);
7、Ok,利用以上各个类的功能,我们可以很简单的实现一些时间计算的功能哦,呵呵,下面看几个方法:
判断是否是闰年
1. /** 2. * 给定一个年份判断该年份是否为闰年 create date:2009-6-10 author:Administrator 3. * 4. * @param year 5. * @return 6. */ 7. public static boolean isLeapYear(int year) { 8. GregorianCalendar calendar = new GregorianCalendar(); 9. return calendar.isLeapYear(year); 10. }
获取当前日期的字符串表示形式
1. /** 2. * 利用SimpleDateFormat获取当前日期的字符串表示形式 格式:2009-55-05 3. * 4. * create date:2009-6-5 author:Administrator 5. * 6. * @return 7. */ 8. public static String getCurrentDate() { 9. // 注意 SimpleDateFormat("yyyy-MM-dd")的参数间隔符号可以随意设置的,如: 10. // yyyy年MM月dd日 返回格式:2009年06月09日 11. // yyyy-MM-dd 返回格式: 2009-06-09 12. // SimpleDateFormat dateFormat = new SimpleDateFormat( 13. // "yyyy-MM-dd HH:mm:ss"); 14. SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); 15. return dateFormat.format(System.currentTimeMillis()); 16. 17. }
给出任意一个年月日得到该天是星期几
1. /** 2. * 给出任意一个年月日得到该天是星期几 create date:2009-6-10 author:Administrator 3. * 4. * @param date 5. * 参数格式 2009-6-10 6. * 返回值:0 代表星期日,1代表星期1,2代表星期2,以此类推 7. */ 8. 9. public static int getWeek(String date) { 10. 11. // 注意参数的大小写格式 12. SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd"); 13. Calendar c = Calendar.getInstance(); 14. try { 15. Date d = dateFormat.parse(date); 16. c.setTime(d); 17. } catch (ParseException e) { 18. } 19. 20. return c.get(Calendar.DAY_OF_WEEK)-1; 21. 22. }
获得今天n天以后或者n天以前是那一天
1. /** 2. * 获得距离今天n天的那一天的日期 create date:2009-6-11 author:Administrator 3. * 4. * @param day 5. * @return 6. */ 7. public static String getDistanceDay(int day) { 8. 9. Calendar calen = Calendar.getInstance(); 10. calen.add(Calendar.DAY_OF_MONTH, day); 11. Date date = calen.getTime(); 12. 13. // 这里也个用SimpleDateFormat的format()进行格式化,然后以字符串形式返回格式化后的date 14. SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); 15. 16. return dateFormat.format(date); 17. }
获得距离指定日期n天的那一天的日期
1. /** 2. * 获得距离指定日期n天的那一天的日期 create date:2009-6-11 author:Administrator 3. * 4. * @param date 5. * 格式:2009-6-11 6. * @param day 7. * @return 8. */ 9. public static String getDistanceDay(String date, int day) { 10. 11. SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd"); 12. Date d; 13. Calendar c =Calendar.getInstance(); 14. try { 15. d = dateFormat.parse(date); 16. c.setTime(d); 17. c.add(Calendar.DATE, day); 18. } catch (ParseException e) { 19. // TODO Auto-generated catch block 20. e.printStackTrace(); 21. } 22. 23. return dateFormat.format(c.getTime()); 24. }
发表评论
-
网络游戏同步的原理
2011-09-22 20:01 817不知道大家是否碰到过这种情况,当某个玩家发出一个火球,这个火球 ... -
java中的io系统详解
2010-09-16 23:21 884Java 流在处理上分为字符流和字节流。字符流处理的单元为 ... -
体验J2SE 1.5新特性之增强For循环
2010-04-08 14:49 824J2SE 1.5提供了另一种形 ... -
XPath
2010-03-22 17:52 1621XPath 简介 XPath 是一门 ... -
通过Singleton单例模式,理解Java的类加载
2010-03-22 16:26 1103通过Singleton单例模式,理解Java的类加载----- ... -
全面总结Java泛型
2009-10-25 12:19 761虽然Scala创始人Martin Odersky说当年正是因为 ... -
理解java String
2009-10-20 15:07 611要理解 java中String的运 ... -
字符串相关
2009-10-20 15:06 588Java代码 public class St ... -
Java中"equals"和"=="的区别
2009-10-20 14:01 658一句话概括:==比较的 ... -
Java代码编写的30条建议
2009-05-14 22:21 745(1) 类名首字母应该大写。字段、方法以及对象(句柄)的首字母 ... -
深入了解Java泛型(三) -- 泛型方法
2009-05-07 09:51 1844前面提到的都是与类的泛型化相关的话题,不过方法也可以从泛型中受 ... -
深入了解Java泛型(二) -- 泛型列表与数组
2009-05-07 09:48 1019记得以前面试的时候曾 ... -
深入了解Java泛型(一) -- 泛型与原生态类型
2009-05-07 09:45 1220Java1.5引入了泛型之后, ... -
正则表达式入门
2009-05-07 09:16 611元字符: /b 代表着单词 ...
相关推荐
java中关于日期处理的总结,包含各种日期格式之间的转java.util.Date(已经不提倡使用,该类的方法比较少) java.util.Calendar(抽象类) java.util.GregorianCalendar(是Calendar的子类,日期处理时候经常使用该类)****...
工作分享:java中的日期处理类总结
### Java中的日期处理类总结:Date、Calendar、GregorianCalendar、DateFormat、SimpleDateFormat 在Java编程中,日期时间处理是常见的需求之一。为了更好地理解和使用Java中的日期处理类,本篇文章将对Date、...
Java中的日期处理是软件开发中经常遇到的问题。在Java中,处理日期的类主要分为以下几个部分:java.util.Date类、java.util.Calendar类、java.util.GregorianCalendar类、java.text.DateFormat类和java.text....
根据给定的文件标题、描述、标签以及部分内容,我们可以总结出以下有关 Java 日期处理的知识点: ### 1. 导入必要的包 在 Java 中处理日期时,我们需要导入一些必要的包来支持日期时间的格式化、解析等功能。示例...
本文详细介绍了如何使用Java处理日期合并的问题,通过对`TimeoffDateDTO`类的定义和日期合并算法的具体实现,提供了一种有效的方法来解决实际工作中经常遇到的时间段重叠问题。这种方法不仅适用于员工请假时间的管理...
第一部分关于JAVA的Date (参考关于JAVA的Date总结) 第二部分Date工具类(参考一个总结好的很好的关于JAVA的Date工具类)
以上就是基于给定文件信息整理出的Java日期处理相关知识点,包括如何获取当前时间、不同格式的时间转换以及在JavaScript中获取当前时间等。这些知识点是Java编程中处理日期时间的基础,对于从事软件开发的人来说非常...
本文将基于标题“Java中对日期的常用处理(转)”来深入探讨Java中的日期处理,结合`DateUtil.java`这个文件名,我们可以推测这是一个包含日期处理工具类的源代码文件。 首先,Java中处理日期的最基础类是`java....
Java 中的日期时间处理是非常重要的,以下是 Java 中日期时间整理的知识点总结: 一、获取服务器端当前日期 在 Java 中,可以使用 `java.util.Date` 类来获取服务器端当前日期。可以使用以下代码来获取当前日期: ...
总结起来,`java.text.SimpleDateFormat`是Java中用于日期和时间格式化的强大工具,通过模式字符串定义日期的显示格式,提供日期到字符串和字符串到日期的转换功能。熟练掌握这一工具类,能够帮助开发者更高效地处理...
总结来说,Java Swing的DatePicker组件通过第三方库提供了一个方便的方式来处理日期选择,它可以极大地提升用户体验。开发者需要了解如何导入和使用这个库,创建DatePicker实例,定制其外观和行为,并将其集成到GUI...
本篇文章主要总结了Java中关于日期处理的基础知识,包括`java.util.Calendar`,`java.util.GregorianCalendar`以及`java.util.Date`这三个核心类。 首先,我们来看`java.util.Date`类。`Date`类是用于表示特定瞬间...
总结来说,这个压缩包提供的内容涵盖了Java编程中的几个核心概念:工具类的实用方法、异常处理的统一策略以及灵活的日志系统。这些组件是构建健壮、可维护的Java应用的基础,对于任何Java开发者来说,理解和掌握这些...
总结来说,Java中的日期时间处理涉及`java.util.Date`、`SimpleDateFormat`和`java.time`包中的类。对于复杂的日期时间操作,推荐使用Java 8的`java.time`API,它提供了更为直观和强大的功能。同时,创建一个统一的`...
总结来说,学习Java处理日期和时间不仅涉及理解和使用新API,还包括掌握日期时间的概念,如闰年、时区、夏令时等。通过视频教程资源,你可以系统地学习这些知识,提高你的Java编程技能。在实际项目中,合理利用这些...
总结来说,Java的日期和时间处理经历了从`java.util.Date`到`java.time`包的演进,提供了更加丰富、易用的API。理解和掌握这些工具类及其方法,对于日常开发工作至关重要,能够帮助我们更好地处理日期和时间相关的...