最近在开发中遇到时间日期上面的一些处理,查询了一些资料,下面列出两种最常用的处理方式
Java提供了3个日期类,Date,Calendar,DateFormat,Date对象主要用于创建日期,获取日期,Calendar可用于获取和设置日期,DataFormat主要用于对日期进行格式化。
1.java.util.Calendar
Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。
例:
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()));
要用Calendar对象得到2014-9-25日期,方法如下:
Calendar calendar = new GregorianCalendar(2014, 8, 25,0,0,0); Date date = calendar.getTime(); System.out.println("Now's the time:"+format.format(date));
java月份是从0-11,月份设置时要减1.
GregorianCalendar构造方法参数依次为:年,月-1,日,时,分,秒.
有些时候我们需要根据时间去取相关年月日的值,Calender提供了方法:
int year =calendar.get(Calendar.YEAR); //月份是0-11,所以要加上1 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);
判断月份最大值,在刚开始对Java不熟悉的时候我获取最大值用了多个判断,但java提供了获取月份最大值得方法
Calendar cal = Calendar.getInstance(); int day=cal.getActualMaximum(Calendar.DAY_OF_MONTH); System.out.println(day);
2.java.util.Date
Date类实际上只是一个包裹类, 它包含的是一个长整型数据, 表示的是从GMT(格林尼治标准时间)1970年, 1月1日00:00:00这一刻之前或者是之后经历的毫秒数。
获取当前时间:
java.util.Date today=new java.util.Date(); System.out.println("Today is "+formats.format(today));
获取当月的第一天:
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));
获取当月的最后一天:
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.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.text.Format formatter=new java.text.SimpleDateFormat("yyyy-MM-dd"); java.util.Date todayDate=new java.util.Date(); //一年后的则这里加上365天 long beforeTime=(todayDate.getTime()/1000)-60*60*24*365; todayDate.setTime(beforeTime*1000); String beforeDate=formatter.format(todayDate); System.out.println(beforeDate);
10小时后的时间:
java.util.Calendar Cal=java.util.Calendar.getInstance(); Cal.setTime(dateOper); //10小时前的则-10 Cal.add(java.util.Calendar.HOUR_OF_DAY,10); System.out.println("date:"+forma.format(Cal.getTime()));
3 java.text.DateFormat
SimpleDateFormat
是一个以国别敏感的方式格式化和分析数据的具体类。 它允许格式化 (date -> text)、语法分析 (text -> date)和标准化。
SimpleDateFormat
允许以为日期-时间格式化选择任何用户指定的方式启动。 但是,希望用 DateFormat
中的getTimeInstance
、 getDateInstance
或 getDateTimeInstance
创建一个日期-时间格式化程序。 每个类方法返回一个以缺省格式化方式初始化的日期/时间格式化程序。
下面是一个小例子:
import java.text.*; import java.util.Date; /** SimpleDateFormat函数语法: G 年代标志符 y 年 M 月 d 日 h 时 在上午或下午 (1~12) H 时 在一天中 (0~23) m 分 s 秒 S 毫秒 E 星期 D 一年中的第几天 F 一月中第几个星期几 w 一年中第几个星期 W 一月中第几个星期 a 上午 / 下午 标记符 k 时 在一天中 (1~24) K 时 在上午或下午 (0~11) z 时区 */ public class FormatDateTime { public static void main(String[] args) { SimpleDateFormat myFmt=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒"); SimpleDateFormat myFmt1=new SimpleDateFormat("yy/MM/dd HH:mm"); SimpleDateFormat myFmt2=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//等价于now.toLocaleString() SimpleDateFormat myFmt3=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒 E "); SimpleDateFormat myFmt4=new SimpleDateFormat( "一年中的第 D 天 一年中第w个星期 一月中第W个星期 在一天中k时 z时区"); Date now=new Date(); System.out.println(myFmt.format(now)); System.out.println(myFmt1.format(now)); System.out.println(myFmt2.format(now)); System.out.println(myFmt3.format(now)); System.out.println(myFmt4.format(now)); System.out.println(now.toGMTString()); System.out.println(now.toLocaleString()); System.out.println(now.toString()); } }
效果:
2014-09-25 10:55:33
2014年09月25日 10时55分33秒 星期四
一年中的第 268 天 一年中第39个星期 一月中第4个星期 在一天中10时 CST时区
25 Sep 2014 02:55:33 GMT
2014-9-25 10:55:33
Thu Sep 25 10:55:33 CST 2014
相关推荐
本文将深入探讨Java中的日期类操作,包括日期的加减运算,以及如何利用不同的日期类进行高效的时间管理。 ### 一、日期类的基本操作 #### 1. 使用Calendar类 `Calendar`类是Java中处理日期和时间的核心类之一,它...
在提供的文件列表中,DateAccount.java可能是包含日期操作逻辑的Java源代码文件,而加减日期.txt和转日期格式.txt很可能是详细说明这些操作的文本文件。通过阅读这些文件,你可以更深入地理解如何在实际代码中实现...
课程笔记:时间戳和int类型的数值进行加减,获得date类型的日期,及时间格式的转换
在处理时间相关的数据分析时,有时我们需要对日期进行加减操作,比如按照月份进行增减。这就是Hive时间按月份加减UDF(用户自定义函数)的作用。 在Hive中,内置的时间函数可以满足大部分日常需求,如获取年份、...
Java 中的 Calendar 类提供了日期和时间的操作功能,本文将对 Calendar 类的日期加减操作进行详细的介绍和分析。 Calendar 类的日期加减操作 Calendar 类的日期加减操作可以通过 set() 方法实现,例如,设置当前...
java 日期时间工具类 日期时间的加减 身份证号上的日期是否小于2岁等
在Java编程中,有时我们需要对当前时间进行加减操作,例如获取当前时间30分钟前或后的时间戳。本文将详细介绍如何使用Java实现这个功能,包括两种不同的方法,并提供一些额外的日期处理知识。 首先,我们需要引入`...
3. **日期时间计算**:在旧API中,可以使用`Calendar`类进行日期时间的加减操作。例如,增加一天:`Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.DAY_OF_MONTH, 1); Date newDate = calendar...
在实现过程中,我们可能还会遇到如日期范围验证、日期时间的计算(如加减日期)等需求,都需要通过适当的逻辑来处理。此外,如果希望在Web环境中使用,可以考虑使用JavaServer Faces (JSF) 或者Vaadin等框架中的日期...
例如,你可以使用`LocalDateTime.now()`获取当前日期和时间,或者通过`plusDays()`、`minusHours()`等方法进行日期时间的加减运算。`DateTimeFormatter`类用于格式化和解析`java.time`对象,比`SimpleDateFormat`更...
#### 一、利用`java.util.Calendar`进行日期加减 在Java中,`java.util.Calendar`是一个非常强大的类,用于处理与日期和时间相关的各种操作,包括日期的加减。`Calendar`类提供了一系列的方法来获取、设置和操作...
在实际开发中,日期加减常用于计算有效期、计划任务、日历应用等场景。例如,计算信用卡到期日、确定项目交付期限、规划节假日等。 10. **最佳实践**: 使用日期类时,应遵循良好的编程习惯,如避免使用字符串...
可以使用 `java.util.Calendar` 类的 `add()` 方法来进行日期的加减运算。 ```java <%@ page import="java.util.*"%> <%@ page import="java.text.*"%> (); SimpleDateFormat formatter = new SimpleDateFormat("E ...
在Java中,日期时间类型通常有`java.util.Date`、`java.sql.Date`、`java.sql.Time`和`java.sql.Timestamp`。MyBatis在映射XML文件中,需要对这些类型进行适当地配置,例如使用`jdbcType`属性指定数据库对应的日期...
4. **日期时间加减操作**:通过增加或减少天数、小时数、分钟数等,可以创建新的日期时间。例如: ```java public static Date addDays(Date date, int days) { Calendar calendar = Calendar.getInstance(); ...
日期类的加减是指对日期类的日期和时间进行加减操作。例如,计算某一月份的最大天数,可以使用 `Calendar` 类的 `getActualMaximum` 方法。首先,需要创建一个 `Calendar` 对象,设置年和月,然后使用 `...
3. **日期加减操作**: - `addDays(Date date, int days)`:在日期上增加或减少指定天数。 - `addMonths(Date date, int months)`:在日期上增加或减少指定月数。 - `addYears(Date date, int years)`:在日期上...
通过阅读“Java编程时间日期API实例解析共15页.pdf.zip”这份资料,你将能够全面掌握Java时间日期API的用法,理解如何在实际项目中高效地处理日期时间,无论是简单的日期格式化,还是复杂的时区转换和日期计算,都将...
在Java编程语言中,处理时间与日期是常见的需求,无论是记录事件发生的时间,还是进行时间相关的计算,都离不开对日期和时间的操作。本教程将深入探讨如何在Java中实现这样的程序,并提供源代码实例。 首先,Java...
3. **日期时间加减**:支持对日期时间进行加减操作,例如添加或减去天数、小时数、分钟等。 4. **日期时间转换**:可能包含将旧的`java.util.Date`转换为新的`java.time`类型的函数,以便更好地利用Java 8的新特性...