转载请注明出处http://blog.csdn.net/harryweasley/article/details/41977633,谢谢

本篇文章主要介绍Date,DateFormat,SimpleDateFormat,Calendar这四个类

Date类:

在java.util包下

类 Date 表示特定的瞬间,精确到毫秒。

 
从 JDK 1.1 開始。应该使用 Calendar 类实现日期和时间字段之间转换,使用 DateFormat 类来格式化和分析日期字符串。

Date 中的对应方法已废弃。 

所以Date主要用来生成时间,

Date有两个构造方法

Date()
          分配 Date 对象并初始化此对象。以表示分配它的时间(精确到毫秒)。

Date(long date) 

           分配 Date 对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”。即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数。

  1. Date date = new Date();
  2. Date date2=new Date(0);
  3. System.out.println(date);
  4. System.out.println(date2);

输出结果是:

  1. Tue Dec 16 19:40:32 CST 2014
  2. Thu Jan 01 08:00:00 CST 1970

能够看出两个构造函数的差别。这里我个人觉得第二个构造函数,用处太少,由于知道一个时间相对于“历元”的毫秒数,是不现实的。

Date经常用法:

boolean after(Date when)        測试此日期是否在指定日期之后
boolean before(Date when)                    測试此日期是否在指定日期之前
int compareTo(Date anotherDate)          比較两个日期的顺序
long getTime() 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数
void setTime(long time) 设置此 Date 对象,以表示 1970 年 1 月 1 日 00:00:00 GMT 以后 time 毫秒的时间点

自我感觉这几个方法都没什么意义,所以就不介绍了。

DateFormat类:

在java.text包下

DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。

它是抽象类,所以不能构造方法来实例化,能够用getDateInstance()和getDateTimeInstance()这两个静态函数来进行实例化。

这两个的差别是一个返回的是日期,一个返回的是日期+时间。

同一时候。getDateInstance(int style, Locale aLocale) 

关于style值:

FULL:    长度最长 比方:2013年1月9日 星期三
LONG:   长度更长 比方:January 9, 2013
MEDIUM:长度比SHORT长 比方:Jan 9,2013
SHORT: 全然为数字,比方:13/1/9

说了这么多。赶紧看样例吧:

  1. DateFormat df = DateFormat.getDateInstance();
  2. // 使用getDateTimeInstance生成format实例。就能够把date和time都显示出来
  3. DateFormat df2 = DateFormat.getDateTimeInstance();
  4.  
  5. String s = df.format(date);
  6. String s2 = df2.format(date);
  7. System.out.println(s);
  8. System.out.println(s2);

输出结果为

  1. 2014-12-16
  2. 2014-12-16 20:01:05

能够看出一个有日期。有时间,一个仅仅有日期。

  1. DateFormat df3 = DateFormat.getDateInstance(DateFormat.FULL,Locale.CHINA);
  2. String china_time = df3.format(new Date());
  3. DateFormat df4 = DateFormat.getDateInstance(DateFormat.LONG,Locale.CHINA);
  4. String g_time = df4.format(new Date());
  5. System.out.println("full值:" + china_time);
  6. System.out.println("long值:" + g_time);

输出值为:

  1. full值:20141216 星期二
  2. long值:20141216

这里就不在解释了。

SimpleDateFormat类:

在java.text包下

它是DateFormat类的直接子类,继承DateFormat类。我是这么理解SimpleDateFormat类的,它相对于Datef类更接地气。你能够任意给他指定一个形式的日期,进行更改。

SimpleDateFormat类主要功能是完毕日期之间格式的转换,并且在转换过程中须要採用例如以下步骤:
1.指定一个模板,并依据这个模板。取出第一个全部的时间数字。

2.全部的时间数字将採用Date类保存。
3.将全部的时间数字又一次进行格式转换。
模板例如以下表,注意区分大写和小写

日期 模板 描写叙述
Y 表示年:yyyy
M 表示月:MM
d 表示日:dd
HH 表示时:HH
mm 表示分:mm
ss 表示秒:ss
毫秒 S 毫秒:SSS
  1. Date date2 = new Date();
  2.  
  3. SimpleDateFormat spf = new SimpleDateFormat("yyyy年-MM月-dd日:HH时-mm分-ss秒");
  4.  
  5. System.out.println(spf.format(date2));

输出为:

  1. 2014年-12月-16日:20时-16分-49

事实上这里能够用sdf.format(System.currentTimeMillis()),而不是用Date类。会更快一些。

这里有两个方法,一定要搞清楚。一个是spf.format(Date)。一个是spf.parse(String),分别代表。将日期变为新的格式,从给定的字符串中提取出日期。提取出来的日期Date类型。

同一时候在调用parse这种方法时。会出现异常,

try {

}    catch (ParseException e) {
e.printStackTrace();
}

这应该不难理解,可能字符串提取不出日期,就会捕捉异常。

Calendar类:

在java.util包下

Calendar 类是一个抽象类,

它为“特定瞬间”与一组诸如 “YEAR”、“MONTH”、“DAY_OF_MONTH”、“HOUR ”等日历字段之间的转换提供了一些方法。并为操作日历字段(比如获得下星期的日期)提供了一些方法。

Calendar实例化有两种方式,第一种是 Calendar nowTime = new GregorianCalendar();。另外一种是Calendar calendar=Calendar.getInstance();

看样例:

  1. Calendar nowTime = new GregorianCalendar();// 获取当前系统平台下默认的日期、时间和时区。
  2.  
  3. int todayYear = nowTime.get(Calendar.YEAR);// 获取当前系统平台下默认日期的“年”。
  4.  
  5. int todayMonth = nowTime.get(Calendar.MONTH) + 1;// 获取当前系统平台下默认日期的“月”。
  6.  
  7. int todayDay = nowTime.get(Calendar.DAY_OF_MONTH); // 获取当前系统平台下默认日期的“日”。
  8.  
  9. // 输出当前系统平台下的时间。
  10. System.out.println("如今的日期是:" + todayYear + "年" + todayMonth + "月"+ todayDay + "日");
  11.  
  12. nowTime.set(2013, 2 - 1, 9);
  13. System.out.println(nowTime.getTime());
  14.  
  15. Calendar calendar3 = Calendar.getInstance();
  16. calendar3.add(Calendar.DATE, 10);
  17. int year1 = calendar3.get(Calendar.YEAR);// 月份
  18. int month1 = calendar3.get(Calendar.MONTH) + 1;// 日期
  19.  
  20. int date1 = calendar3.get(Calendar.DATE);
  21. System.out.println(year1 + "年" + month1 + "月" + date1 + "日");

输出为:

  1. 如今的日期是:20141216
  2. Sat Feb 09 20:29:30 CST 2013
  3. 20141226

呼。

。。最终完毕了。

。。

Java中关于日期类那些方法的更多相关文章

  1. Java中各种(类、方法、属性)访问修饰符与修饰符的说明

    类: 访问修饰符 修饰符 class 类名称 extends 父类名称 implement 接口名称 (访问修饰符与修饰符的位置可以互换) 访问修饰符 名称 说明 备注 public 可以被本项目的所 ...

  2. Java基础(43):Java中的Object类与其方法(转)

    Object类 java.lang.Object java.lang包在使用的时候无需显示导入,编译时由编译器自动导入. Object类是类层次结构的根,Java中所有的类从根本上都继承自这个类. O ...

  3. 日期类的加减及java中所以日期类的操作算法大全

    1.计算某一月份的最大天数 1Calendar time=Calendar.getInstance();2time.clear();3time.set(Calendar.YEAR,year); //y ...

  4. Java中包、类、方法、属性、常量的命名规则

    1:包(package):用于将完成不同功能的类分门别类,放在不同的目录(包)下,包的命名规则:将公司域名反转作为包名.比如www.baidu.com 对于包名:每个字母都需要小写.比如:com.ba ...

  5. java中 时间/日期 的使用方法

    import java.util.*;    //引入date需要的包import java.text.SimpleDateFormat;//   引入格式化需要的包import java.util. ...

  6. Java中的日期表示类

    一.概述 Java中的日期类设计的比较失败,刚开始使用Date来计算时间,后来大部分Date类的方法都过时了:想用Calendar类代替Date类,然而Calendar类也是不尽如人意.下面简单介绍下 ...

  7. java中的常用类(二)

    java中的常用类(二) Math类 Math类的声明:public final class Math extends Object Math类是与数学计算有关的类,里面的方法都是静态方法,直接使用类 ...

  8. Java中的日期处理类

    在Java中可以使用Date类和Calendar类来处理日期 但是Date类很多方法都过时了,推荐使用Canlendar类来处理日期,并对日期的格式化做了介绍.下面的部分将会逐一介绍 Date类 Ja ...

  9. java中常用的包、类、以及包中常用的类、方法、属性----sql和text\swing

    java中常用的包.类.以及包中常用的类.方法.属性 常用的包 java.io.*; java.util.*; java.lang.*; java.sql.*; java.text.*; java.a ...

随机推荐

  1. google/protobuf/releases/tag/v3.4.0 下载

    Protocol Buffers v3.4.0 Downloads 4.07 MB protobuf-cpp-3.4.0.tar.gz 5.02 MB protobuf-cpp-3.4.0.zip 4 ...

  2. [Algorithm] Trie data structure

    For example we have an array of words: [car, done, try, cat, trie, do] What is the best data structu ...

  3. 使用Editplus配置PHP调试环境

    工欲善其事必先利其器.近期看了非常多PHP的IDE介绍.最后选择了Editplus.以下说说一些PHP的调试环境配置问题. 1. 加入PHP模板 第一步 新建->其他->php 第二步 输 ...

  4. Activity基本跳转

    详细解释:http://blog.csdn.net/xiazdong/article/details/7664757 简单介绍activity的跳转,通过intent实现,详细的注释在代码中.涉及到a ...

  5. JSP 页面传值

    使用session会话传值并重定向页面 //得到用户提交的值 String name = request.getParameter("username"); String pwd ...

  6. margin和padding的学习

    你在学习margin和padding的时候是不是懵了--什么他娘的内边距,什么他娘的外边距.呵呵呵,刚開始我也有点不理解,后来通过查资料学习总算弄明确了,如今我来谈一下自己对margin和paddin ...

  7. win7 mtp

    Sensors MTP Monitor Service 允许MTP设备数据传输,如果该服务被禁用,MTP监视器将不能工作.该服务的默认运行方式是手动,如果你没有使用MTP设备,该功能就可以放心禁用.  ...

  8. js输出指定n位数的随机数的随机整数方法【转发】

    /** * Description:[输出指定n位数的随机数的随机整数] * * @param n 指定n位数 * */ function RndNum(n) { var rnd = "&q ...

  9. ios开发之公交卡系统的设计与实现

    // // main.m // Bus-公交 /* 公交一卡通充值系统.有两种功能选择.第一种投入硬币或者纸币 选择购票,另外一种一卡通充值,充值面额是20,50.100 */ #import < ...

  10. 关于NHibernate中存在于Session中实例的3种状态的简单分析

    在使用NHibernate的时候.在Session中会有3种状态. 1. 瞬时状态 (Transient) 由 new 命令开辟内存空间的对象,也就是平时所熟悉的普通对象. 如: Student st ...