现在的位置: 首页 > 综合 > 正文

java中的时间操作 一

2013年07月27日 ⁄ 综合 ⁄ 共 1710字 ⁄ 字号 评论关闭

java
中的时间操作不外乎这四种情况:

1
、获取当前时间

2
、获取某个时间的某种格式

3
、设置时间

4
、时间的运算

好,下面就针对这三种情况,一个一个搞定。

 

一、获取当前时间

 

有两种方式可以获得,第一种,使用
Date
类。

j2SE
的包里有两个
Date
类,一个是
java.sql.Date,
一个是
java.util.Date

这里,要使用
java.util.Date
。获取当前时间的代码如下

 

Date date = new Date();

date.getTime()
;

还有一种方式,使用
System.currentTimeMillis()
;


 

这两种方式获得的结果是一样的,都是得到一个当前的时间的
long
型的时间的毫秒值,这个值实际上是当前时间值与
1970
年一月一号零时零分零秒相差的毫秒数。

当前的时间得到了,但实际的应用中最后往往不是要用这个
long
型的东西,用户希望得到的往往是一个时间的字符串,比如“
2006

6

18
号”,或“
2006-06-18
”,老外可能希望得到的是“
06-18-2006
”,诸如此类等等。这就是下一个要解决的问题

 

二、获取某个时间的某种格式

 

获取时间的格式,需要用到一个专门用于时间格式的类
java.text.SimpleDateFormat

首先,定义一个
SimpleDateFormat
变量

SimpleDateFormat sdf = new SimpleDateFormat(“”,Locale.SIMPLIFIED_CHINESE);

这个构造函数的定义如下:

SimpleDateFormat(String

pattern, Locale

locale)

第一个参数
pattern
,我们后面再解释,这里我们使用一个
“”,
第二个参数,是用来设置时区的,这里用到了
java.util.Locale
这个类,这个类了面定义了很多静态变量,直接拿过来用就
OK
,我们把时区设置为
Locale.SIMPLIFIED_CHINESE
,只看名字,这个静态变量的意义已经很清楚了。

 

接下来我们使用这个
SimpleDateFormat
把当前时间格式化为一个如下格式的时间字符串“
XXXX

XX

XX

_XX

XX

XX
秒”,代码:

 

sdf.applyPattern(“yyyy年MM月dd日_HH时mm分ss秒”);

String timeStr = sdf.format(new Date());

 

获取时间格式的函数是
format
,这个函数的参数是
java.util.Date
对象,这个没有什么花头。

要说明一下的是这个
pattern
,所谓的模式。这里,
yyyy,MM,dd
等,这就是模式。

我们可以在
SimpleDateFormat
的构造函数中指定模式,比如

SimpleDateFormat sdf = new SimpleDateFormat(“
yyyy-MM-dd
“,Locale.SIMPLIFIED_CHINESE);



也可以获取时间格式的时候使用applyPattern函数临时指定,上面的例子就是这样。

什么字符代表什么,这是
j2se
约定好的,设置模式的时候,我们可以使用约定好的字符加上任何我们想要的字符串。

j2se
对字符所代表的模式的约定列表如下:

 

 

 

Letter Date or Time Component

Presentation

G Era designator Text
y Year Year
M Month in year Month
w Week in year Number
W Week in month Number
D Day in year Number
d Day in month Number
F Day of week in month Number
E Day in week Text
a Am/pm marker Text
H Hour in day (0-23) Number
k Hour in day (1-24) Number
K Hour in am/pm (0-11) Number
h Hour in am/pm (1-12) Number
m Minute in hour Number
s Second in minute Number
S Millisecond Number
z Time zone General time zone
Z Time zone RFC 822 time zone

抱歉!评论已关闭.