JAVA处理日期时间常用方法: java.util.Calendar
Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。
例:Calendar cal = Instance()。//使用默认时区和语言环境获得一个日历。
cal.add(Calendar.DAY_OF_MONTH, -1)。//取当前日期的前一天.
cal.add(Calendar.DAY_OF_MONTH, -1)。//取当前日期的前一天.
cal.add(Calendar.DAY_OF_MONTH, +1)。//取当前日期的后一天.
//通过格式化输出日期
SimpleDateFormat format = SimpleDateFormat("yyyy-MM-dd")。
SimpleDateFormat format = SimpleDateFormat("yyyy-MM-dd")。
System.out.println("Today is:"+format.Instance().getTime()))。
System.out.println("yesterday is:"+format.Time()))。
得到2007-12-25日期: Calendar calendar = new GregorianCalendar(2007, 11, 25,0,0,0)。 java valueof
Date date = Time()。System.out.println("2007 Christmas is:"+format.format(date))。 //java月份是从0-11,月份设置时要减1.
//GregorianCalendar构造方法参数依次为:年,月-1,日,时,分,秒.
取日期的部分: int year =(Calendar.YEAR)。
int (Calendar.MONTH)+1。
int day =(Calendar.DAY_OF_MONTH)。
int hour =(Calendar.HOUR_OF_DAY)。
int minute =(Calendar.MINUTE)。
int seconds =(Calendar.SECOND)。
取月份要加1.判断当前月份的最大天数:
Calendar cal = Instance()。
int ActualMaximum(Calendar.DAY_OF_MONTH)。
System.out.println(day)。 java.util.Date
类 Date 表示特定的瞬间,精确到毫秒。从 JDK 1.1 开始,应该使用 Calendar 类实现日期和时间字段之间转换,使用 DateFormat 类来格式化和分析日期字符串。Date 中的相应方法已废弃。 尽管 Date 类打算反映协调世界时 (UTC),但无法做到如此准确,这取决于 Java 虚拟机的主机环境。当前几乎所有操作系统都假定 1 天 = 24 × 60 × 60 = 86400 秒。但对于 UTC,大约每一两年出现一次额外的一秒,称为“闰秒”。闰秒始终作为当天的最后一秒增加,并且始终在 12 月 31 日或 6 月 30 日增加。例如,1995 年的最后一分钟是 61 秒,因为增加了闰秒。大多数计算机时钟不是特别的准确,因此不能反映闰秒的差别。
在类 Date 所有可以接受或返回年、月、日期、小时、分钟和秒值的方法中,将使用下面的表示形式: 年份 y 由整数 y - 1900 表示。
∙ 月份由从 0 至 11 的整数表示;0 是一月、1 是二月等等;因此 11 是十二月。
∙ 日期(一月中的某天)按通常方式由整数 1 至 31 表示。
∙ 小时由从 0 至 23 的整数表示。因此,从午夜到 的时间是 0 点,从中午到 的时间是 12 点。
∙ 分钟按通常方式由 0 至 59 的整数表示。
∙ 秒由 0 至 61 的整数表示;值 60 和 61 只对闰秒发生,尽管那样,也只用在实际正确跟踪闰秒的 Java 实现中。于按当前引入闰秒的方式,两个闰秒在同一分钟内发生是极不可能的,但此规范遵循 ISO C 的日期和时间约定。
在所有情形中,针对这些目的赋予方法的参数不需要在指定的范围内;例如,可以把日期指定为 1 月 32 日,并把它解释为 2 月 1 日的相同含义。
java.util.Date today=new java.util.Date()。
System.out.println("Today is "+formats.format(today))。
取当月的第一天:
SimpleDateFormat format = SimpleDateFormat("yyyy-MM-01")。
java.util.Date firstDay=new java.util.Date()。
System.out.println("the month first day is "+formats.format(firstDay))。
取当月的最后一天:
System.out.println("Today is "+formats.format(today))。
取当月的第一天:
SimpleDateFormat format = 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 = Instance()。
int ActualMaximum(Calendar.DAY_OF_MONTH)。
Format formatter3=SimpleDateFormat("yyyy-MM-"+maxDay)。
System.out.println(formatter3.Time()))。
求两个日期之间相隔的天数:
SimpleDateFormat format = SimpleDateFormat("yyyy-MM-dd")。
java.util.Date beginDate= format.parse("2007-12-24")。
java.util.Date endDate= format.parse("2007-12-25")。
long day=(Time()-Time())/(24*60*60*1000)。
System.out.println("相隔的天数="+day)。
一年前的日期:
Format formatter=SimpleDateFormat("yyyy-MM-dd")。
java.util.Date todayDate=new java.util.Date()。
long beforeTime=(Time()/1000)-60*60*24*365。
int ActualMaximum(Calendar.DAY_OF_MONTH)。
Format formatter3=SimpleDateFormat("yyyy-MM-"+maxDay)。
System.out.println(formatter3.Time()))。
求两个日期之间相隔的天数:
SimpleDateFormat format = SimpleDateFormat("yyyy-MM-dd")。
java.util.Date beginDate= format.parse("2007-12-24")。
java.util.Date endDate= format.parse("2007-12-25")。
long day=(Time()-Time())/(24*60*60*1000)。
System.out.println("相隔的天数="+day)。
一年前的日期:
Format formatter=SimpleDateFormat("yyyy-MM-dd")。
java.util.Date todayDate=new java.util.Date()。
long beforeTime=(Time()/1000)-60*60*24*365。
todayDate.setTime(beforeTime*1000)。
String beforeDate=formatter.format(todayDate)。
System.out.println(beforeDate)。
一年后的日期:
Format formatter=SimpleDateFormat("yyyy-MM-dd")。
java.util.Date todayDate=new java.util.Date()。
long afterTime=(Time()/1000)+60*60*24*365。
todayDate.setTime(afterTime*1000)。
String afterDate=formatter.format(todayDate)。
System.out.println(afterDate)。
求10小时后的时间
java.util.Calendar Cal=java.Instance()。
Cal.setTime(dateOper)。
Cal.add(java.util.Calendar.HOUR_OF_DAY,10)。
String beforeDate=formatter.format(todayDate)。
System.out.println(beforeDate)。
一年后的日期:
Format formatter=SimpleDateFormat("yyyy-MM-dd")。
java.util.Date todayDate=new java.util.Date()。
long afterTime=(Time()/1000)+60*60*24*365。
todayDate.setTime(afterTime*1000)。
String afterDate=formatter.format(todayDate)。
System.out.println(afterDate)。
求10小时后的时间
java.util.Calendar Cal=java.Instance()。
Cal.setTime(dateOper)。
Cal.add(java.util.Calendar.HOUR_OF_DAY,10)。
System.out.println("date:"+forma.Time()))。
求10小时前的时间
java.util.Calendar Cal=java.Instance()。
Cal.setTime(dateOper)。
Cal.add(java.util.Calendar.HOUR_OF_DAY,-10)。
System.out.println("date:"+forma.Time()))。
3.java.sql.Date
继承自java.util.Date,是操作数据库用的日期类型
求10小时前的时间
java.util.Calendar Cal=java.Instance()。
Cal.setTime(dateOper)。
Cal.add(java.util.Calendar.HOUR_OF_DAY,-10)。
System.out.println("date:"+forma.Time()))。
3.java.sql.Date
继承自java.util.Date,是操作数据库用的日期类型
一个包装了毫秒值的瘦包装器 (thin wrapper),它允许 JDBC 将毫秒值标识为 SQL DATE 值。毫秒值表示自 1970 年 1 月 1 日 00:00:00 GMT 以来经过的毫秒数。为了与 SQL DATE 的定义一致,由 java.sql.Date 实例包装的毫秒值必须通过将时间、分钟、秒和毫秒设置为与该实例相关的特定时区中的零来“规范化”。
java.sql.Date sqlDate = new java.sql.Date(java.sql.Date.valueOf("2007-12-25").getTime())。
日期比较:简单的比较可以以字符串的形式直接比较,也可使用
java.sql.Date.valueOf("2007-03-08")pareTo(java.sql.Date.valueOf("2007-03-18"))方式来比较日期的大小.也可使用java.util.Date.after(java.util.Date)来比较.
日期比较:简单的比较可以以字符串的形式直接比较,也可使用
java.sql.Date.valueOf("2007-03-08")pareTo(java.sql.Date.valueOf("2007-03-18"))方式来比较日期的大小.也可使用java.util.Date.after(java.util.Date)来比较.
4.java.util.GregorianCalendar
GregorianCalendar 是 Calendar 的一个具体子类,提供了世界上大多数国家/地区使用的标准日历系统。
GregorianCalendar 是一种混合日历,在单一间断性的支持下同时支持儒略历和格里高利历系统,在默认情况下,它对应格里高利日历创立时的格里高利历日期(某些国家/地区是在 1582 年 10 月 15 日创立,在其他国家/地区要晚一些)。可由调用方通过调用 setGregorianChange() 来更改起始日期。
历史上,在那些首先采用格里高利历的国家/地区中,1582 年 10 月 4 日(儒略历)之后就
是 1582 年 10 月 15 日(格里高利历)。此日历正确地模拟了这些变化。在开始格里高利历之前,GregorianCalendar 实现的是儒略历。格里高利历和儒略历之间的惟一区别就是闰年规则。儒略历指定每 4 年就为闰年,而格里高利历则忽略不能被 400 整除的世纪年。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论