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));
}
}