我们在数据库中存储日期时间时,通常建议存储为长整型数字,既有利于数据优化,也有利于操作日期数据时的统一。这就需要用到日期、字符串即长整型数据之间的互相转换。我们接下来就解决这样的问题。
1.将长整型数字转换为日期格式的字符串
1 import java.text.ParseException; 2 import java.text.SimpleDateFormat; 3 import java.util.Date; 4 /** 5 * 日期/字符串/长整型数字间的互转 6 */ 7 public class Test1 { 8 // 短日期格式 9 public static String DATE_FORMAT = "yyyy-MM-dd"; 10 // 长日期格式 11 public static String TIME_FORMAT = "yyyy-MM-dd HH:mm:ss"; 12 public static void main(String[] args) { 13 System.out.println(System.currentTimeMillis()); 14 System.out.println(test1(System.currentTimeMillis(), DATE_FORMAT)); 15 } 16 //将长整型数字转换为日期格式的字符串 17 static String test1(long time, String format) { 18 SimpleDateFormat dateFormat = new SimpleDateFormat(format); 19 Date date = new Date(time); 20 return dateFormat.format(date); 21 } 22 }
上述代码执行后输出结果如下:
1517309922118 2018-01-30
2.将日期格式的字符串转换为长整型
1 import java.text.ParseException; 2 import java.text.SimpleDateFormat; 3 import java.util.Date; 4 /** 5 * 日期/字符串/长整型数字间的互转 6 */ 7 public class Test1 { 8 // 短日期格式 9 public static String DATE_FORMAT = "yyyy-MM-dd"; 10 // 长日期格式 11 public static String TIME_FORMAT = "yyyy-MM-dd HH:mm:ss"; 12 public static void main(String[] args) { 13 // System.out.println(System.currentTimeMillis()); 14 // System.out.println(test1(System.currentTimeMillis(), DATE_FORMAT)); 15 try { 16 long time = test2(test1(System.currentTimeMillis(), DATE_FORMAT), DATE_FORMAT); 17 System.out.println(time+""); 18 } catch (ParseException e) { 19 e.printStackTrace(); 20 } 21 } 22 //将长整型数字转换为日期格式的字符串 23 static String test1(long time, String format) { 24 SimpleDateFormat dateFormat = new SimpleDateFormat(format); 25 Date date = new Date(time); 26 return dateFormat.format(date); 27 } 28 //将日期格式的字符串转换为长整型 29 static long test2(String date,String format) throws ParseException { 30 SimpleDateFormat dateFormat = new SimpleDateFormat(format); 31 return dateFormat.parse(date).getTime(); 32 } 33 }
上述代码执行结果如下:
1517241600000