package com.demo.simpledateformat; import java.text.ParseException; import java.text.ParsePosition; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; /*** * SimpleDateFormat 对象 * String --> Date * Date --> String */ public class DateFormat { public static void main(String[] args) throws ParseException { DateToString(); StringToDate(); TestCalendar(); } private static void TestCalendar() { Calendar calendar = Calendar.getInstance(); System.out.println("得到当前时间对象:"+calendar.getTime().getTime()); // 直接设定日历的年月日是分秒,月份是从0开始的 --> 2012-6-12 13:25:22 calendar.set(2012,12,12,13,25,22); System.out.println(calendar.getTime().toLocaleString()); // 通过长时间去设定日历 --> 2017-12-6 21:14:35 calendar.setTimeInMillis(1512566075165L); System.out.println(calendar.getTime().toLocaleString()); } /*** * Date --> String */ private static void DateToString() { String DATA_ONE = "yyyy-MM-dd HH:mm:ss"; String DATA_TWO = "yyyy-M-d HH:mm:ss"; String DATA_THREE = "yyyy-M-d"; String DATA_FOUR = "HH:mm:ss"; String DATA_FIVE = "yyyy年MM月dd HH:mm:ss"; SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat(DATA_ONE); SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat(DATA_TWO); SimpleDateFormat simpleDateFormat3 = new SimpleDateFormat(DATA_THREE); SimpleDateFormat simpleDateFormat4 = new SimpleDateFormat(DATA_FOUR); SimpleDateFormat simpleDateFormat5 = new SimpleDateFormat(DATA_FIVE); System.out.println(simpleDateFormat1.format(Calendar.getInstance().getTime())); // 推迟10天,3小时,20分钟,10秒 Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.DAY_OF_YEAR,10); calendar.add(Calendar.HOUR_OF_DAY,3); calendar.add(Calendar.MINUTE,20); calendar.add(Calendar.SECOND,10); System.out.println("经过延时后的时间:"+simpleDateFormat2.format(calendar.getTime())); System.out.println(simpleDateFormat3.format(Calendar.getInstance().getTime())); System.out.println(simpleDateFormat4.format(Calendar.getInstance().getTime())); System.out.println(simpleDateFormat5.format(Calendar.getInstance().getTime())); } /** * 在将String类型的时间转换成Date形式时,需要注意: * 1.构造SimpleDateFormat对象时,传递的时间格式必须和需要格式的String类型保持一致。 * 2.格式上的统一至少保持年月日上面的统一。 * 3.格式化后返回一个Date对象 * 4.两个重载的方法 * parse(String source, ParsePosition pos) pos-->开始解析的位置 * parse(String source) * */ private static void StringToDate() throws ParseException { String stDa1 = "2017/02/03 19:46:23"; //由 String-->Date 时,时间格式上面至少保持年月日上面的一致 //SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/MM/dd"); Date date = simpleDateFormat.parse(stDa1); System.out.println("由String类型时间转化成的Date对象:"+date); Date date1 = simpleDateFormat.parse(stDa1,new ParsePosition(2)); SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); System.out.println("将Date对象转化格式输出:"+simpleDateFormat1.format(date)); System.out.println("添加ParsePosition参数后解析的时间:"+simpleDateFormat1.format(date1)); } }