項目心得——按照指定的日期/時間創建Date對象
有時,在做項目中,需要獲得指定日期的Date對象,這個指定的日期或者時間可能不是當前的時間。下面講解兩種獲取指定日期/時間的Date對象的方法:
1 package cc.bcy; 2 import java.text.DateFormat; 3 import java.text.ParseException; 4 import java.text.SimpleDateFormat; 5 import java.util.Calendar; 6 import java.util.Date; 7 import java.util.GregorianCalendar; 8 public class DateTest 9 { 10 public static void main(String[] args) throws ParseException 11 { 12 /*第一種方法*/ 13 // 獲得2009年06月01日 的Date對象 14 DateFormat dateFormat1 = new SimpleDateFormat("yyyy-MM-dd"); 15 Date myDate1 = dateFormat1.parse("2009-06-01"); 16 System.out.println(myDate1); 17 // 獲得2010年9月13日22點36分01秒 的Date對象 18 DateFormat dateFormat2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 19 Date myDate2 = dateFormat2.parse("2010-09-13 22:36:01"); 20 System.out.println(myDate2); 21 System.out.println(); 22 23 /*第二種方法*/ 24 //獲取2014年2月11日的Date對象 25 Calendar myCalendar = new GregorianCalendar(2014, 2, 11); 26 Date myDate3 = myCalendar.getTime(); 27 System.out.println(myDate3); 28 //獲取2014年2月11日 22:36:01的Date對象 29 Calendar myCalendar2 = new GregorianCalendar(2014, 2, 11,22,36,01); 30 Date myDate4 = myCalendar2.getTime(); 31 System.out.println(myDate4); 32 } 33 }
獲取當前時間的Date對象:
1 package cc.bcy; 2 import java.text.DateFormat; 3 import java.text.ParseException; 4 import java.text.SimpleDateFormat; 5 import java.util.Calendar; 6 import java.util.Date; 7 import java.util.GregorianCalendar; 8 public class DateTest 9 { 10 public static void main(String[] args) throws ParseException 11 { 12 Date d1 = new Date(); //當前時間 13 System.out.println(d1); 14 }//Thu May 30 10:50:04 CST 2019 15 }
獲取指定時間戳的Date對象:
1 package cc.bcy; 2 import java.text.DateFormat; 3 import java.text.ParseException; 4 import java.text.SimpleDateFormat; 5 import java.util.Calendar; 6 import java.util.Date; 7 import java.util.GregorianCalendar; 8 public class DateTest 9 { 10 public static void main(String[] args) throws ParseException 11 { 12 // 從1970年1月1日 早上8點0分0秒 開始經歷的毫秒數 13 Date d2 = new Date(5000); 14 System.out.println("從1970年1月1日 早上8點0分0秒 開始經歷了5秒的時間"); 15 System.out.println(d2); 16 } 17 } 18 /* 19 從1970年1月1日 早上8點0分0秒 開始經歷了5秒的時間 20 Thu Jan 01 08:00:05 CST 1970 21 */
獲取當前時間的時間戳:
1 package cc.bcy; 2 import java.text.DateFormat; 3 import java.text.ParseException; 4 import java.text.SimpleDateFormat; 5 import java.util.Calendar; 6 import java.util.Date; 7 import java.util.GregorianCalendar; 8 public class DateTest 9 { 10 public static void main(String[] args) throws ParseException 11 { 12 Date now = new Date(); 13 System.out.println("當前時間的時間戳為:"+now.getTime()); 14 System.out.println("當前時間的時間戳為:"+System.currentTimeMillis()); 15 } 16 } 17 //當前時間的時間戳為:1559185132787 18 //當前時間的時間戳為:1559185132787
把當前時間格式化為字符串:
1 package cc.bcy; 2 import java.text.*; 3 import java.util.*; 4 5 public class DateTest 6 { 7 public static void main(String[] args) throws ParseException 8 { 9 SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS" ); 10 Date d= new Date(); 11 String str = sdf.format(d); 12 System.out.println("當前時間通過 yyyy-MM-dd HH:mm:ss SSS 格式化后的輸出: "+str); 13 14 SimpleDateFormat sdf1 =new SimpleDateFormat("yyyy-MM-dd" ); 15 Date d1= new Date(); 16 String str1 = sdf1.format(d1); 17 System.out.println("當前時間通過 yyyy-MM-dd 格式化后的輸出: "+str1); 18 } 19 } 20 /* 21 當前時間通過 yyyy-MM-dd HH:mm:ss SSS 格式化后的輸出: 2019-05-30 11:03:15 267 22 當前時間通過 yyyy-MM-dd 格式化后的輸出: 2019-05-30 23 */
Calendar與Date進行轉換:
1 package cc.bcy; 2 import java.text.*; 3 import java.util.*; 4 5 public class DateTest 6 { 7 public static void main(String[] args) throws ParseException 8 { 9 //采用單例模式獲取日歷對象Calendar.getInstance(); 10 Calendar c = Calendar.getInstance(); 11 //通過日歷對象得到日期對象 12 Date date = c.getTime(); 13 14 Date date2 = new Date(0); 15 c.setTime(date2); //把這個日歷,調成日期 : 1970.1.1 08:00:00 16 } 17 }
Calendar的簡單操作:
add方法,在原日期上增加年/月/日
set方法,直接設置年/月/日
1 package cc.bcy; 2 import java.text.*; 3 import java.util.*; 4 5 public class DateTest 6 { 7 8 public static void main(String[] args) throws ParseException 9 { 10 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 11 Calendar c = Calendar.getInstance(); 12 Date now = c.getTime(); 13 // 當前日期 14 System.out.println("當前日期: " + sdf.format(now)); 15 16 // 下個月的今天 17 c.add(Calendar.MONTH, 1); 18 System.out.println("下個月的今天: " +sdf.format(c.getTime())); 19 20 // 去年的今天 21 c.setTime(now); 22 c.add(Calendar.YEAR, -1); 23 System.out.println("去年的今天: " +sdf.format(c.getTime())); 24 25 // 上個月的第三天 26 c.setTime(now); 27 c.add(Calendar.MONTH, -1); 28 c.set(Calendar.DATE, 3); 29 System.out.println("上個月的第三天: " +sdf.format(c.getTime())); 30 } 31 } 32 /* 33 當前日期: 2019-05-30 11:14:41 34 下個月的今天: 2019-06-30 11:14:41 35 去年的今天: 2018-05-30 11:14:41 36 上個月的第三天: 2019-04-03 11:14:41 37 */