Date API:https://docs.oracle.com/javase/8/docs/api/java/util/Date.html
SimpleDateFormat API: https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
DateFormatSymbols API: https://docs.oracle.com/javase/8/docs/api/java/text/DateFormatSymbols.html
1. 根据Date类对象获取timestamp
设Date对象为date, date.getTime()即可获得timestamp;
API如下:
示例如下:
public static void main(String[] args) throws ParseException {
System.out.println("timestamps = " + new Date().getTime());
}
输出如下:
2. 由timestamp获得Date类对象date
Date类的构造方法可直接以timestamp为参数构造,
API如下:
示例如下:
public static void main(String[] args) throws ParseException {
long timestamp = System.currentTimeMillis();
System.out.println("timestamp = " + timestamp);
System.out.println(new Date(timestamp));
}
输出如下:
3. 获取指定时间的Date类变量date
通过String类型strDate指定日期,然后通过SimpleDateFormat的parse方法解析得到Date类型变量date。代码如下:
public static void main(String[] args) throws ParseException {
String strDate = "2018-01-01 00:00:00.000";
String pat1 = "yyyy-MM-dd HH:mm:ss.SSS";
SimpleDateFormat sdf = new SimpleDateFormat(pat1);
Date date = sdf.parse(strDate);
System.out.println(date);
}
输出如下:
4. 由Date类型变量获得指定格式的String类型时间
通过SimpleDateFormat,可以讲Date类型变量date解析为指定格式的String类型。
public static void main(String[] args) throws ParseException {
Date date = new Date();
String pat1 = "yyyy-MM-dd HH:mm:ss.SSS"; // 保留全部数据
String pat2 = "MM-dd HH:mm"; // 只保留日期和时分
SimpleDateFormat sdf1 = new SimpleDateFormat(pat1);
SimpleDateFormat sdf2 = new SimpleDateFormat(pat2);
System.out.println("raw date format: " + date.toString());
System.out.println("pattern1: " + sdf1.format(date));
System.out.println("pattern2: " + sdf2.format(date));
}
输出如下:
SimpleDateFormat的API参考文首ref,日期格式化模板例子如下:
5. 如何由String类strDate = date.toString() 如(“Mon Apr 30 10:32:03 CST 2018”)获得Date对象
1)method1(已经废弃): Date类的构造方法,通过date = new Date(strDate)
示例如下:
public static void main(String[] args) throws ParseException {
Date date1 = new Date();
String strDate = date1.toString();
System.out.println("strDate is: " + strDate);
Date date2 = new Date(strDate);
System.out.println("constructed date2 is: " + date2.toString());
}
输出如下:
![](https://i-blog.csdnimg.cn/blog_migrate/615a93c4e387e9eb71371165b714492a.png)
2)method2:由SimpleDateFormat解析strDate获得Date对象date
public static void main(String[] args) throws ParseException {
Date date1 = new Date();
String strDate = date1.toString();
System.out.println("raw strDate = " + strDate);
String pat = "E MMM dd HH:mm:ss zzz yyyy";
// 为sdf设置语言环境为English,因为默认情况下是中文语言环境
SimpleDateFormat sdf = new SimpleDateFormat(pat, Locale.ENGLISH);
// parse and get date2
Date date2 = sdf.parse(strDate);
System.out.println("after parsing, date2 = " + date2);
}
输出如下:
3)补充说明:
构造SimpleDateFormat时如果没有指定Locale为English,则默认locale为本地环境Chinese,此时sdf的解析会获得中文字符,例子如下:
public static void main(String[] args) throws ParseException {
Date date1 = new Date();
String strDate = date1.toString();
System.out.println("raw strDate = " + strDate);
String pat = "E MMM dd HH:mm:ss zzz yyyy";
SimpleDateFormat sdf = new SimpleDateFormat(pat);
// with default locale--chinese, and default DateFormatSymbols
System.out.println(sdf.format(date1));
}
输出如下:
6. DateFormatSymbols类讲解
DateFormatSymbols
是一个公共类,用于封装可本地化的日期-时间格式化数据,如月名、星期几的名称和时区数据。DateFormat
和 SimpleDateFormat
都使用 DateFormatSymbols
来封装此信息。
public static void main(String[] args) throws IOException {
// 默认locale下封装的“月”
DateFormatSymbols dfsDefault = new DateFormatSymbols();
String[] monthsDefault = dfsDefault.getMonths();
System.out.println(Arrays.toString(monthsDefault));
// locale为ENG情况下封装的“月”
DateFormatSymbols dfsENG = new DateFormatSymbols(Locale.ENGLISH);
String[] monthsENG = dfsENG.getMonths();
System.out.println(Arrays.toString(monthsENG));
}
输出: