java中日期的操作,简单理解

 

Java中关于日期的三个类

1、具体类(和抽象类相对)java.util.Date  
2
、抽象类java.text.DateFormat 和它的一个具体子类,java.text.SimpleDateFormat  
3
、抽象类java.util.Calendar 和它的一个具体子类,java.util.GregorianCalendar  

 

jdk1.1之前,date无所不能(无视),但是用jdk自己的话:Unfortunately, the API for these functions was not amenable to internationalization.jdk1.1之后,date出现了分支:Calendar用于日期和时间之间的转换;DateFormat用于格式化和解析时间字符串。Date为具体类,CalendarDateFormat为抽象类用于提供各种方法。

 

首先看被阉割的Date

构造函数:

//date只有两种构造方法,其他都被阉割了。分别是空的和带long参数的

       public static void testConstructor() {

             

              //无参数的构造方法,获得当前的时间

              //输出:Mon Jul 23 15:20:43 CST 2012

              Date date=new Date();

              System.out.println(date);

             

              //带有long参数的构造方法

              long tmp=new Long("1231423432423");

              //long tmp2=1231423432423l;new 和直接赋值都可,但是后者得加"l"

              date=new Date(tmp);

              System.out.println(date);

       }

方法:

//date的方法,貌似就个getTime()有用

       public static void testMethod () {

             

              Date date=new Date();

              //after before忽略

             

              //clone返回对象的一个拷贝,此处体现了多态的特性

              //即虽然返回的dateobject类型的tmp引用,但是toString()方法任然是date重写后的方法,而非object方法

              Object tmp=date.clone();

             

              System.out.println(date.toString());

              System.out.println(tmp.toString());

              //两者都输出Mon Jul 23 16:01:10 CST 2012

             

              //compareTo equals 忽略

             

              //getTime()大概唯一具有实际意义的一个方法,返回自197011号的毫秒

              System.out.println(date.getTime());

       }

再先看Calendar:简单的看Calendar有一个getInstance()方法可以获得本地的“日历”,再通过get()方法可以获得这个“日历”里的各种信息,这是获取信息,与之对应的可以通过set()方法来改变“日历”中的信息,从而获得自己需要的日期以及更多关于日期的计算。

//Calendar中提供了N多字段已经各种对时间的操作方法

       public static void testCalendar() {

              //通过getInstance()获得本机的一个时间实例

              Calendar cal=Calendar.getInstance();

              System.out.println(cal);//--内部中所有的字段存储在fields

              System.out.println(cal.get(Calendar.YEAR));//--获得日历中的年(也可以获得其他月,日等)

             

              //通过set方法设置时间。java时间操作最终改变的是getTime()的值,getTime()返回的值为相对精确的一个时间

              //通过format类可以设置各种时间格式

              cal.set(2011, 9, 19);

              Date date=cal.getTime();

              System.out.println(date);

       }

最后看DateFormat,主要看它的实现类SimpleDateFormat。目前就一个构造方法可用,具体用法看jdk

public static void testDateFormat() {

              Date date=new Date();

             

              //主要是几个日期字符的操作,可以参考JDK

              SimpleDateFormat simpleDateFormat1=new SimpleDateFormat("yyyy/MM/dd HH:mm");

              SimpleDateFormat simpleDateFormat2=new SimpleDateFormat("今年是yyyy");

              System.out.println(simpleDateFormat1.format(date));//输出“2012/07/24 23:54

              System.out.println(simpleDateFormat2.format(date));//输出“今年是2012

       }

JDK格式表:

Letter

Date or Time Component

Presentation

Examples

G

Era designator

Text

AD

y

Year

Year

1996; 96

M

Month in year

Month

July; Jul; 07

w

Week in year

Number

27

W

Week in month

Number

2

D

Day in year

Number

189

d

Day in month

Number

10

F

Day of week in month

Number

2

E

Day in week

Text

Tuesday; Tue

a

Am/pm marker

Text

PM

H

Hour in day (0-23)

Number

0

k

Hour in day (1-24)

Number

24

K

Hour in am/pm (0-11)

Number

0

h

Hour in am/pm (1-12)

Number

12

m

Minute in hour

Number

30

s

Second in minute

Number

55

S

Millisecond

Number

978

z

Time zone

General time zone

Pacific Standard Time; PST; GMT-08:00

Z

Time zone

RFC 822 time zone

-0800

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值