【Date】Java中时间格式
1. 理论知识:
/**
* 'Z' 标识 格林威治时间格式
* 一般 常用 四种:
(只要确定了 格式,不管是 String 转 Date 还是 Date 转 String 都毫无压力)
* new SimpleDateFormat( "yyyyMMddHHmmss'Z'")
* new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
* new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
* new SimpleDateFormat("yyyy-MM-dd")
* 在 Date 转 String 的时候就决定了 格式,因为 手动输入 String 必须符合一定的格式
*/
2. 代码示例,认真看,这个代码足够了。
/** * @Author Yancy_01 * @Time 2019-07-23 18:06 */ package cn.com.infosec.netcert.caAdmin.test; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.TimeZone; /** * @Description (补充描述) * @Author jy * @Time 2019-07-23 18:06 */ public class Test_timeChange { /** * @Author jy * @Time 2019-07-23 18:06 * @version 1.0 * @throws ParseException */ public static void main(String[] args) throws ParseException { // Calendar 和 Date Test_timeChange.Calendar_And_Date(); // Date 和 String Test_timeChange.Date_to_String(); // String 到 Date Test_timeChange.String_to_Date(); } // Date 转换 为 String public static void Date_to_String() throws ParseException { // Date 转 String Date date = new Date(); System.out.println(date); // 当前时间输出显示为 :Thu Jul 25 10:16:44 CST 2019 SimpleDateFormat df_1 = new SimpleDateFormat("yyyyMMddHHmmss'Z'"); String str_1 = df_1.format(date); System.out.println(str_1); // 输出显示为 : 20190725101644Z SimpleDateFormat df_2 = new SimpleDateFormat("yyyyMMddHHmmss'Z'"); df_2.setTimeZone(TimeZone.getTimeZone("GMT")); String str_2 = df_2.format(date); System.out.println(str_2); //输出显示为: 20190725021644Z GMT 国际时间格式,中国时间 = GMT + 8小时,所以输出 时间要早8小时 SimpleDateFormat df_3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String str_3 = df_3.format(date); System.out.println(str_3); // 输出显示为 : 20190725101644Z } // String 转换为 Date public static void String_to_Date() throws ParseException { // String 转换为 Date 时,String有没有 Z 都可以,格式中会处理 // 切记 不要将 "20190725102542Z" 按 new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") 格式转换就行,解析时格式不匹配 String str_4 = "20190725102542Z"; SimpleDateFormat df_4 = new SimpleDateFormat("yyyyMMddHHmmss"); Date date_4 = df_4.parse(str_4); System.out.println(date_4); // 输出显示为 : Thu Jul 25 10:25:42 CST 2019 String str_5 = "2019-07-25 10:25:42Z"; // 有没有Z没有影响 SimpleDateFormat df_5 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date_5 = df_5.parse(str_5); System.out.println(date_5); // 输出显示为 : Thu Jul 25 10:25:42 CST 2019 } // 讲清楚 Calendar 和 Date 的 关系 public static void Calendar_And_Date() { Calendar c = Calendar.getInstance(); c.set(Calendar.YEAR, 2019); c.set(Calendar.MONTH, 8); // 输出的结果是 9月,表示月的标识有 :MONTH_OF_YEAR 和 MONTH ,请慎重使用 c.set(Calendar.DAY_OF_MONTH, 2); // 输出结果 是 2月,标识日的标识有 DAY_OF_MONTH 和 DATE ,两者结果一致,建议使用前者 c.set(Calendar.HOUR_OF_DAY, 22); // 输出结果是 22时,表示时的标识 有 HOUR_OF_DAY 和 HOUR ,其中 HOUR 为12显示法,超过12默认进位,推荐使用 前者 c.set(Calendar.MINUTE, 30); c.set(Calendar.SECOND, 10); // 通常日历需要先转 Date Date date = c.getTime(); System.out.println(date); // 输出显示为 Mon Sep 02 22:30:10 CST 2019 ,此为Date格式 // 特别注意 c.set(xxxx,xxx); 任何值没有手动设置,将获取当前计算机的时间/系统时间 } // 应用场景: 数据库获取 20190725101644Z,输出为 2019-07-25 10:16:44 public static void demo() throws ParseException { // 先根据 String的格式 转为 Date String str_6 = "20190725101644Z"; SimpleDateFormat df_6 = new SimpleDateFormat("yyyyMMddHHmmss"); Date date_6 = df_6.parse(str_6); System.out.println(date_6); // 输出显示为:Thu Jul 25 10:16:44 CST 2019 // 再根据需要的格式,转为 String SimpleDateFormat df_7 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String str_7 = df_7.format(date_6); System.out.println(str_7); // 输出显示为: 2019-07-25 10:16:44 } }
over…