SimpleDateFormat函数的继承关系:
java.lang.Object
|
+----java.text.Format
|
+----java.text.DateFormat
|
+----java.text.SimpleDateFormat
/**
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 时区
*/
以下是一些用到的例子:
场景一: 给定毫秒数或者当前系统时间,返回指定时间格式 输入
format 根据SimpleDateFormat对自定义格式的翻译,将date转化为String类型
Date date=new Date();//获得系统当前的时间
// long date=(long)24979599*60000; //任意毫秒数,可以parse转化为日期类型后getTime获取
// long date=1498838705129l;
System.out.println(date);
SimpleDateFormat sd=new SimpleDateFormat("yyyy-MM-dd HH:mm");
//声明一个SimpleDateFormat变量sd,用于将自定义的日期格式(String类型)转换成format可识别的格式
// SimpleDate sd=new SimpleDateFormat("yyyy-MM-dd HH:mm"); 如此声明也可行
String newdate=sd.format(date);
//将data根据转换后的格式转换回自定义的格式(String类型),再赋值给newdate(String类型)
return newdate; //返回newdate的值
注意:在第二行和第三行抓化为long类型时要强制性long转换,否则会提示type int is out of range
场景二:给定任意时间格式,返回毫秒数
parse转化为Date类型后可以直接获取毫秒。输入2017-06-28T09:52 返回毫秒
String s="2017-06-28T09:52";
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd'T'HH:mm");
Date date=sdf.parse(s);
System.out.println(date);//Sat Jan 28 09:52:00 CST 2017
System.out.println(date.getTime());
场景三:将给定格式转换为指定格式
输入 06-29-2017 输出 2017/06/29 先parse转化为date类型,再将其format为指定日期类型
String str = "06-29-2017";
SimpleDateFormat sd = new SimpleDateFormat("MM-dd-yyyy");
Date date = (Date) sd.parse(str);
System.out.println(date);
sd = new SimpleDateFormat("yyyy/MM/dd");
String strDate = sd.format(date);
System.out.println(strDate);
场景四:直接将当前毫秒时间转换成自定义格式
拍照的时候 对生成的照片进行命名
//拍照的时候 对生成的照片进行命名
public static String getSaveImageFullName() {
return "IMG_" + new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()) + ".jpg";// 照片命名
}