简介
本文用示例介绍Java中的日期格式化类SimpleDateFormat的用法。
SimpleDateFormat的toString方法返回的String格式示例:Mon May 04 09:51:52 CDT 2013
常用方法
以下方法全都不是静态方法。必须先new一个SimpleDateFormat
方法名 | 作用 |
long getTime( ) | 对应的时间戳 |
void setTime(long time) | 根据时间戳设置时间 |
String format(Date date) | 把日期格式化为想要的格式 |
Date parse(String source) | 将字符串解析为Date |
boolean equals(Object date) | 当调用此方法的Date对象和指定日期相等时候返回true,否则返回false。 |
boolean after(Date date) | 若当调用此方法的Date对象在指定日期之后返回true,否则返回false。 |
boolean before(Date date) | 若当调用此方法的Date对象在指定日期之前返回true,否则返回false。 |
日期格式化编码
日期和时间的格式化编码
时间模式字符串用来指定时间格式。在此模式中,所有的 ASCII 字母被保留为模式字母,定义如下:
字母 | 描述 | 有效值 | 示例 | ||||||||||||||||||
G | 纪元标记 | AD | |||||||||||||||||||
y | 四位年份 | yy, yyyy | 2001 | ||||||||||||||||||
M | 月份 | MM,MMM,MMMM MM 二位数字显示月份。位数不够前面补 0 MMM 用月份名称简写显示月份,如 Nov MMMMM 用月份名称全称显示月份,如 November | 07 | ||||||||||||||||||
d | 一个月的日期 | d,dd | 10 | ||||||||||||||||||
h | A.M./P.M. (1~12)格式小时 | hh:二位数字显示 12 小时制的小时 ,位数不够前面补 0 | 12 | ||||||||||||||||||
H | 一天中的小时 (0~23) | HH:二位数字显示 24 小时制的小时,位数不够前面补 0 | 22 | ||||||||||||||||||
m | 分钟数 | mm:二位数字显示分钟,位数不够前面补 0 | 30 | ||||||||||||||||||
s | 秒数 | ss:二位数字显示秒 ,位数不够前面补 0 | 55 | ||||||||||||||||||
S | 毫秒数 | SSS:三位数字显毫秒,位数不够前面补 0 | 234 | ||||||||||||||||||
E | 星期几 | Tuesday | |||||||||||||||||||
D | 一年中的日子 | 0-366 | 360 | ||||||||||||||||||
F | 一个月中第几周的周几 | 2 (second Wed. in July) | |||||||||||||||||||
w | 一年中第几周 | 40 | |||||||||||||||||||
W | 一个月中第几周 | 0-5 | 1 | ||||||||||||||||||
a | A.M./P.M. 标记 | PM | |||||||||||||||||||
k | 一天中的小时(1~24) | 1-24 | 24 | ||||||||||||||||||
K | A.M./P.M. (0~11)格式小时 | 0-11 | 10 | ||||||||||||||||||
z | 时区 | Eastern Standard Time | |||||||||||||||||||
' | 文字定界符 | Delimiter | |||||||||||||||||||
" | 单引号 | 在两个'符号之间的字符串会被当做常量直接显示 | ` | ||||||||||||||||||
非字母字符 | 例如-/*&^%()数字等,直接填充字符串位置 |
使用printf格式化日期
printf 方法可以很轻松地格式化时间和日期。使用两个字母格式,它以 %t 开头并且以下面表格中的一个字母结尾。
转换符 | 说 明 | 示 例 |
c | 包括全部日期和时间信息 | 星期六 十月 27 14:21:20 CST 2007 |
F | "年-月-日"格式 | 2007-10-27 |
D | "月/日/年"格式 | 10/27/07 |
r | "HH:MM:SS PM"格式(12时制) | 02:25:51 下午 |
T | "HH:MM:SS"格式(24时制) | 14:28:16 |
R | "HH:MM"格式(24时制) | 14:28 |
普通转换
其他网址
基本转换
package org.example.a;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Demo{
public static void main(String[] args) {
Date date = new Date();
System.out.println(date);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(sdf.format(date));
try {
Date date1 = sdf.parse("2020-07-20 20:30:10");
System.out.println(date1);
} catch (ParseException e) {
e.printStackTrace();
}
}
}
运行结果
Wed Jul 29 21:56:18 CST 2020
2020-07-29 21:56:18
Mon Jul 20 20:30:10 CST 2020
cron与Date转换
package org.example.a;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
class DateUtil {
//日期转化为cron表达式
public static String getCron(Date date){
String dateFormat="ss mm HH dd MM ? yyyy";
if (date == null)
return "";
try {
SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
return sdf.format(date);
} catch (Exception e) {
e.printStackTrace();
return "";
}
}
//cron表达式转为日期
public static Date getCronToDate(String cron) {
String dateFormat="ss mm HH dd MM ? yyyy";
SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
Date date = null;
try {
date = sdf.parse(cron);
} catch (ParseException e) {
return null;
}
return date;
}
}
public class Demo{
public static void main(String[] args) {
System.out.println(DateUtil.getCron(new Date()));
System.out.println(DateUtil.getCronToDate("0 0 2 3 12 ? 2012"));
}
}
执行结果
12 05 22 29 07 ? 2020
Mon Dec 03 02:00:00 CST 2012
时间戳与Date转换
package org.example.a;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Demo {
public static void main(String[] args) {
//获取当前时间戳
Long timeStamp = System.currentTimeMillis();
System.out.println(timeStamp);
// 时间戳转换成时间
Date date = new Date(timeStamp);
System.out.println(date);
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String sd = sdf.format(date);
System.out.println("date1: " + sd);
//获取当前时间
Date date2 = new Date();
String sd2 = sdf.format(date2);
System.out.println("date2: " + sd2);
//时间转化为时间戳
Long timeStamp2 = date2.getTime();
System.out.println(timeStamp2);
}
}
执行结果
1594038062627
Mon Jul 06 20:21:02 CST 2020
date1: 2020-07-06 20:21:02
date2: 2020-07-06 20:21:02
1594038062669
其他网址
Java 日期时间 | 菜鸟教程