在早期的JDK版本中,日期(Date)类附有两大功能:(1)允许用年、月、日、时、分、秒来解释日期:(2)允许对表示日期的字符串进行格式化和句法分析。在JDK1.1中提供了类Calendar来完成第一种功能,类DateFormat来完成第二项功能。dateFormat是java.text包中的一个类。与Date类有所不同的是,DateFormat类接受用各种语言和不同习惯表示的日期字符串。本节将介绍java.util包中的类Calendar及其它新增加的相关的类。

类Calendar是一个抽象类,它完成日期(Date)类和普通日期表示法(即用一组整型域如YEAR,MONTH,DAY,HOUR表示日期)之间的转换。

由于所使用的规则不同,不同的日历系统对同一个日期的解释有所不同。在JDK1.1中提供了Calendar类一个子类GregorianCalendar??它实现了世界上普遍使用的公历系统。当然用户也可以通过继承Calendar类,并增加所需规则,以实现不同的日历系统。

第GregorianCalendar继承了Calendar类。本节将在介绍类GregorianCalendar的同时顺带介绍Calendar类中的相关方法。

类GregorianCalendar提供了七种构造函数:

(1)public GregorianCalendar()

创建的对象中的相关值被设置成指定时区,缺省地点的当前时间,即程序运行时所处的时区、地点的当前时间。

(2)public GregorianCalendar(TimeZone zone)

创建的对象中的相关值被设置成指定时区zone,缺省地点的当前时间。

(3)public GregorianCalendar(Locale aLocale)

创建的对象中的相关值被设置成缺省时区,指定地点aLocale的当前时间。

(4)public GregorianCalendar(TimeZone zone,Local aLocale)

创建的对象中的相关值被设置成指定时区,指定地点的当前时间。

上面使用到的类TimeZone的性质如下:

TimeZone是java.util包中的一个类,其中封装了有关时区的信息。每一个时区对应一组ID。类TimeZone提供了一些方法完成时区与对应ID两者之间的转换。

(Ⅰ)已知某个特定的ID,可以调用方法

public static synchronized TimeZone getTimeZone(String ID)

来获取对应的时区对象。

例 太平洋时区的ID为PST,用下面的方法可获取对应于太平洋时区的时区对象:

TimeZone tz=TimeZone.getTimeZone("PST");

调用方法getDefault()可以获取主机所处时区的对象。

TimeZone tz=TimeZone.getDefault();

(Ⅱ)调用以下方法可以获取时区的ID

■public static synchronized String[] getavailableIDs(int rawOffset)

根据给定时区偏移值获取ID数组。同一时区的不同地区的ID可能不同,这是由于不同地区对是否实施夏时制意见不统一而造成的。

例String s[]=TimeZone.getAvailableIDs(-7*60*60*1000);

打印s,结果为s[0]=PNT,s[1]=MST

■public static synchronized String[] getAvailableIDs()

获取提供的所有支持的ID。

■public String getID()

获取特定时区对象的ID。

例 TimeZone tz=TimeZone.getDefault();

String s=tz.getID();

打印s,结果为s=CTT。

上面使用类的对象代表了一个特定的地理、政治或文化区域。Locale只是一种机制,它用来标识一类对象,Local本身并不包含此类对象。

要获取一个Locale的对象有两种方法:

(Ⅰ)调用Locale类的构造方法

Locale(String language,String country)

Locale(String language,String country,String variant)

参数说明:language??在ISO-639中定义的代码,由两个小写字母组成。

country??在ISO-3166中定义的代码,由两个大写字母组成。

variant??售货商以及特定浏览器的代码,例如使用WIN代表Windows。

(Ⅱ)调用Locale类中定义的常量

Local类提供了大量的常量供用户创建Locale对象。

例 Locale.CHINA

为中国创建一个Locale的对象。

类TimeZone和类Locale中的其它方法,读者可查阅API。

(5)public GregorianCalendar(int year,int month,int date)

(6)public GregorianCalendar(int year,int month,int date,int hour,int minute)

(7)public GregorianCalendar(int year,int month,int date,int hour,int minute,int second)

用给定的日期和时间创建一个GregorianCalendar的对象。

参数说明:

year-设定日历对象的变量YEAR;month-设定日历对象的变量MONTH;

date-设定日历对象的变量DATE;hour-设定日历对象的变量HOUR_OF_DAY;

minute-设定日历对象的变量MINUTE;second-设定日历对象的变量SECOND。

与Date类中不同的是year的值没有1900这个下限,而且year的值代表实际的年份。month的含义与Date类相同,0代表1月,11代表12月。

例 GregorianCalendar cal=new GregorianCalendar(1991,2,4)

cal的日期为1991年3月4号。

除了与Date中类似的方法外,Calendar类还提供了有关方法对日历进行滚动计算和数学计算。计算规则由给定的日历系统决定。进行日期计算时,有时会遇到信息不足或信息不实等特殊情况。Calendar采取了相应的方法解决这些问题。当信息不足时将采用缺省设置,在GregorianCalendar类中缺省设置一般为YEAR=1970,MONTH=JANUARY,DATE=1。

当信息不实时,Calendar将按下面的次序优先选择相应的Calendar的变量组合,并将其它有冲突的信息丢弃。

MONTH+DAY_OF_MONTH

MONTH+WEEK_OF_MONTH+DAY_OF_WEEK

MONTH+DAY_OF_WEEK_OF_MONTH+DAY_OF_WEEK

DAY_OF+YEAR

DAY_OF_WEEK_WEEK_OF_YEAR

HOUR_OF_DAY

日历类Calendar的更多相关文章

  1. 日期Data类,日历类Calendar

    用于得到当前时间,和设置日期类数据 public void testDate() { // 创建一个日期对象 Date date = new Date(); /** * 从1900年1月1日 00:0 ...

  2. java日历类Calendar简单使用

    import java.util.Calendar; import java.util.TimeZone; public class Test1 { public static void main(S ...

  3. java 日历类Calendar用法

    如何获取昨天?取昨天的日期,本想的截出来日期减一就好了.又一想不对,如果今天是一号怎么办? 现有两个办法 1: Date as = new Date(new Date().getTime()-24*6 ...

  4. 常用类--Date日期类,SimpleDateFormat日期格式类,Calendar日历类,Math数学工具类,Random随机数类

    Date日期类 Date表示特定的时间,精确到毫秒; 构造方法: public Data() public Date(long date) 常用方法: public long getTime() pu ...

  5. Calendar日历类

    package com.yhqtv.demo02.ThreadPool; import java.util.Calendar; import java.util.Date; /* * java.uti ...

  6. java基础22 日期类、日历类、日期格式类

    package com.dhb.code; import java.text.ParseException; import java.text.SimpleDateFormat; import jav ...

  7. iOS 日历类(NSCalendar)

    对于时间的操作在开发中很常见,但有时候我们需要获取到一年后的时间,或者一周后的时间.靠通过秒数计算是不行的.那就牵扯到另外一个日历类(NSCalendar).下面先简单看一下 NSDate let d ...

  8. NSCalendar 日历类

    NSCalendar 日历类 Cocoa中对日期和时间的处理 NSCalendar (一) (2008-11-12 21:54:10) NSCalendar用于处理时间相关问题.比如比较时间前后.计算 ...

  9. java学习笔记之日期日历类

    java学习笔记之日期日历 Date日期类概述: 表示特定的瞬间,精确到毫秒 Date类的构造方法: 1.空参数构造方法 Date date = new Date(); 获取到当前操作系统中的时间和日 ...

随机推荐

  1. LAMP动态网站实例

    Zend Optimizer: 用优化代码的方法来提高PHP应用程序的执行速度.实现的原理是对那些在被最终执行之前由运行编译器(Run-Time Compiler)产生的代码进行优化.一般情况下,执行 ...

  2. 我的PHPMailer_v5.1 使用

    <?php /** * Simple example script using PHPMailer with exceptions enabled * @package phpmailer * ...

  3. kindeditor 图片上传插件

    富文本编辑器,kindeditor是比较好用的一款.需要的功能都有,文档.demo也详细.有什么功能去官网看一眼就好. 官网:http://kindeditor.net/ 一些好用的如图片上传,kin ...

  4. tornado zbar 二维码识别 ,配合nginx 反向代理,supervisord 监控

    tornado zbar 二维码识别 ,配合nginx 反向代理,supervisord 监控 1.zbar识别二维码程序,python2.6.6 #!/usr/bin/env python # co ...

  5. stderr和stdout详细解说(转)

    今天又查了一下fprintf,其中对第一个参数stderr特别感兴趣. int fprintf(FILE *stream,char *format,[argument]): 在此之前先区分一下:pri ...

  6. iOS中 最新微信支付/最全的微信支付教程具体解释 韩俊强的博客

    亲们, 首先让我们来看一下微信支付的流程吧. 1. 注冊微信开放平台,创建应用获取appid,appSecret,申请支付功能,申请成功之后会返回一些參数. 2. 下载微信支付sdk 3. clien ...

  7. 基于Qt的A*算法可视化分析

    代码地址如下:http://www.demodashi.com/demo/13677.html 需求 之前做过一个无人车需要自主寻找最佳路径,所以研究了相关的寻路算法,最终选择A算法,因为其简单易懂, ...

  8. Android Touch事件传递机制引发的血案

    尊重原创:http://blog.csdn.net/yuanzeyao/article/details/38942135 关于Android Touch事件传递机制我之前也写过两篇文章,自觉得对Tou ...

  9. JS遍历数组类型元素

    已停供用户不能再次停供,之前没太处理过多维数组的遍历,趁这个机会回顾一下js数组遍历 可以看出rows 获取了两条数据,为二维数组类型 方法 function batchTgWin() { var r ...

  10. JBOSS整套开发组件整合和配置方法

    http://blog.csdn.net/laigood/article/details/5743712主要是集成jboss,jboss esb,jboss portal,jboss seam,jbo ...