项目心得——按照指定的日期/时间创建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 */