标签:
1、与日期时间相关的类:
第一:java.util.Date; 将时间作为一个整体使用、处理时,使用Date类较为简便
第二:java.util.Calender; 要处理时间的一部分,如月、分时,使用Calendar类较为简便
第三:java.text.DateFormat 抽象类,是SimpleDateFormate的父类
第四:java.text.SimpleDateFormate 时间日期转换时,用的最多的类
2、日期和时间模式
日期和时间格式由日期和时间模式 字符串指定。在日期和时间模式字符串中,未加引号的字母 ‘A‘
到 ‘Z‘
和 ‘a‘
到 ‘z‘
被解释为模式字母,用来表示日期或时间字符串元素。文本可以使用单引号 (‘
) 引起来,以免进行解释。"‘‘"
表示单引号。所有其他字符均不解释;只是在格式化时将它们简单复制到输出字符串,或者在解析时与输入字符串进行匹配。
定义了以下模式字母(所有其他字符 ‘A‘
到 ‘Z‘
和 ‘a‘
到 ‘z‘
都被保留):
字母 | 日期或时间元素 | 表示 | 示例 |
---|---|---|---|
G |
Era 标志符 | Text | AD |
y |
年 | Year | 1996 ; 96 |
M |
年中的月份 | Month | July ; Jul ; 07 |
w |
年中的周数 | Number | 27 |
W |
月份中的周数 | Number | 2 |
D |
年中的天数 | Number | 189 |
d |
月份中的天数 | Number | 10 |
F |
月份中的星期 | Number | 2 |
E |
星期中的天数 | Text | Tuesday ; Tue |
a |
Am/pm 标记 | Text | PM |
H |
一天中的小时数(0-23) | Number | 0 |
k |
一天中的小时数(1-24) | Number | 24 |
K |
am/pm 中的小时数(0-11) | Number | 0 |
h |
am/pm 中的小时数(1-12) | Number | 12 |
m |
小时中的分钟数 | Number | 30 |
s |
分钟中的秒数 | Number | 55 |
S |
毫秒数 | Number | 978 |
z |
时区 | General time zone | Pacific Standard Time ; PST ; GMT-08:00 |
Z |
时区 | RFC 822 time zone | -0800 |
为什么有的格式大写,有的格式小写,那是怕避免混淆,例如MM是月份,mm是分;HH是24小时制,而hh是12小时制
3、格式转换
DateFormat类中的两个方法:
public Date parse(String source) throws ParseException A.parse(B) :将字符串B按照A的形式解析成Date A是DateFormat或者其子类的实例
public final String format(Date date) A.format(B):将一个 Date类型的B格式化为A格式的字符串 A是DateFormat或者其子类的实例
实例: 将2008-10-19 10:11:30.345转化为2008年10月19日 10时11分30秒345毫秒
public static void main(String args[]){
String strDate = "2008-10-19 10:11:30.345" ;
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS") ; // 实例化模板对象
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒SSS毫秒") ;
Date d = null ;
try{
d = sdf1.parse(strDate) ; // 将给定的字符串中解析成日期
System.out.println(d); //Sun Oct 19 10:11:30 CST 2008
}catch(Exception e){
e.printStackTrace() ;
}
System.out.println(sdf2.format(d)) ; // 将日期格式化为字符串 2008年10月19日 10时11分30秒345毫秒
}
4、日期比较、加减
Date类中的两个方法:
public long getTime() 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
public void setTime(long time) 设置此 Date
对象,以表示 1970 年 1 月 1 日 00:00:00 GMT 以后 time
毫秒的时间点。
实例: 求出sourceTime,过minuteNumber分钟后的时间
public static String getPreTime(String sourceTime, String minuteNumber) { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String mydate1 = ""; try { Date date1 = format.parse(sourceTime); long Time = (date1.getTime() / 1000) + Integer.parseInt(minuteNumber) * 60; date1.setTime(Time * 1000); mydate1 = format.format(date1); } catch (Exception e) { } return mydate1; }
5、时间戳:某个时间点的时间戳就是:该时间点距1970 年 1 月 1 日 00:00:00相差的毫秒数
获得当前时间的时间戳:new Date().getTime(); System.currentTimeMillis();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
package com.playtogether.utils; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class DateUtils { /** * unix时间戳转换为dateFormat * * @param beginDate * @return */ public static String timestampToDate(String beginDate) { SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" ); String sd = sdf.format( new Date(Long.parseLong(beginDate))); return sd; } /** * 自定义格式时间戳转换 * * @param beginDate * @return */ public static String timestampToDate(String beginDate,String format) { SimpleDateFormat sdf = new SimpleDateFormat(format); String sd = sdf.format( new Date(Long.parseLong(beginDate))); return sd; } /** * 将字符串转为时间戳 * * @param user_time * @return */ public static String dateToTimestamp(String user_time) { String re_time = null ; SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd HH:mm" ); Date d; try { d = sdf.parse(user_time); long l = d.getTime(); String str = String.valueOf(l); re_time = str.substring( 0 , 10 ); } catch (ParseException e) { e.printStackTrace(); } return re_time; } } |
标签:
原文地址:http://www.cnblogs.com/ctaixw/p/5068717.html