SimpleDateFormat函数语法:
G 年代标志符
y 年
M 月
d 日
h 时 在上午或下午 (1~12)
H 时 在一天中 (0~23)
m 分
s 秒
S 毫秒
E 星期
D 一年中的第几天
F 一月中第几个星期几
w 一年中第几个星期
W 一月中第几个星期
a 上午 / 下午 标记符
k 时 在一天中 (1~24)
K 时 在上午或下午 (0~11)
z 时区
时间转字符串:
SimpleDateFormat sp=new SimpleDateFormat("yyyy-MM-dd",Locale.CHINA);
String date = sp.format("2017-12-31");
SimpleDateFormat aDate=new SimpleDateFormat("yyyy-mm-dd HH:mm:ss");
SimpleDateFormat bDate=new SimpleDateFormat("yyyy-mmmmmm-dddddd");
long now=System.currentTimeMillis();
System.out.println(aDate.format(now));
System.out.println(bDate.format(now));
SimpleDateFormat myFmt=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
SimpleDateFormat myFmt1=new SimpleDateFormat("yy/MM/dd HH:mm");
SimpleDateFormat myFmt2=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//等价于now.toLocaleString()
SimpleDateFormat myFmt3=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒 E ");
SimpleDateFormat myFmt4=new SimpleDateFormat("一年中的第 D 天 一年中第w个星期 一月中第W个星期 在一天中k时 z时区");
System.out.println(myFmt.format(now));
System.out.println(myFmt1.format(now));
System.out.println(myFmt2.format(now));
System.out.println(myFmt3.format(now));
System.out.println(myFmt4.format(now));
结果:
2017-10-17 11:10:21
2017-000010-000017
2017年10月17日 11时10分21秒
17/10/17 11:10
2017-10-17 11:10:21
2017年10月17日 11时10分21秒 星期二
一年中的第 290 天 一年中第42个星期 一月中第3个星期 在一天中11时 CST时区
字符串转时间:
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd",Locale.CHINA);
Date date = sf.parse("9999-12-31");
private static long parseTime(String strTime) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
long time = 0L;
try {
time = format.parse(strTime).getTime();
} catch (ParseException e) {
e.printStackTrace();
}
return time;
}
public static void main(String[] args) {
String aString="2017-11-12";
long aTime=parseTime(aString);
System.out.println(aTime);
SimpleDateFormat aDate=new SimpleDateFormat("yyyy-MM-dd");
System.out.println(aDate.format(aTime));
}
结果:
1510416000000
2017-11-12
时间格式测试:toLocaleString
已经过时,建议用 DateFormat
System.out.println(new java.util.Date());
System.out.println(new java.util.Date().toLocaleString());
输出:
Mon Dec 10 21:07:39 CST 2018
2018-12-10 21:07:39
实例:DateFormat
DateFormat ddf = DateFormat.getDateInstance();
DateFormat dtf = DateFormat.getTimeInstance();
DateFormat ddtf = DateFormat.getDateTimeInstance();
Date date = new Date();
System.out.println("日期:" + ddf.format(date));
System.out.println("时间:" + dtf.format(date));
System.out.println("日期时间:" + ddtf.format(date));
SimpleDateFormat sdf = (SimpleDateFormat) DateFormat.getDateTimeInstance();
System.out.println("日期时间:" + sdf.format(date));
输出:
日期:2018-12-10
时间:21:04:45
日期时间:2018-12-10 21:04:45
日期时间:2018-12-10 21:04:45
其他时间测试:
Date date1 = new Date();
java.sql.Date date2 = new java.sql.Date(date1.getTime());
Timestamp date3 = new Timestamp(date1.getTime());
System.out.println(date1.toLocaleString()+"____"+date2.toLocaleString()+"_____"+date3);
System.out.println(DateFormat.getInstance().format(date1));
System.out.println(DateFormat.getInstance().format(date2));
System.out.println(DateFormat.getInstance().format(date3));
输出:
2018-12-10 21:00:49____2018-12-10 21:00:49_____2018-12-10 21:00:49.143
18-12-10 下午9:00
18-12-10 下午9:00
18-12-10 下午9:00