1.String轉Date
private void StringtoDate() throws ParseException {
String dateStr = "2018-08-07 16:24:35";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = sdf.parse(dateStr);
}
2.Date轉String
private void DatetoString() throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date();
String dateStr = sdf.format(date);
}
3.時間戳轉Date
private void timeStamptoDate() throws ParseException {
long timeStamp = System.currentTimeMillis();
Date date = new Date();
}
4.Date轉時間戳
private void DatetotimeStamp() throws ParseException {
Date date = new Date();
long timeStamp = date.getTime();
}
在date和時間戳互相轉換的過程中,並不是在轉換,時間戳是Date類的一個屬性,可以把轉換理解爲拿和調用構造,這點在Date的源碼中可以看出。
public class Date
implements java.io.Serializable, Cloneable, Comparable<Date>
{
private static final BaseCalendar gcal =
CalendarSystem.getGregorianCalendar();
private static BaseCalendar jcal;
//此處爲時間戳保存的變量,使用了transient 關鍵字防止此變量被序列化
private transient long fastTime;
..............
//無參構造,當我們調用new Date()時,其實Date類自動調用了其有參構造,並傳輸了System.currentTimeMillis()系統時間ms爲參數
public Date() {
this(System.currentTimeMillis());
}
//有參構造 這裏是把參數賦值,完成實例化
public Date(long date) {
fastTime = date;
}
...............
5.處理獲取某n天前/後的時間
/**
* 處理加減天數
*
* @param strDate 需要處理的時間集合
* @param day 需要增減的天數
*/
private List<String> handleDate(List<String> strDate, int day) {
List<String> formatDateList = new ArrayList<>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
Calendar calendar = Calendar.getInstance();
try {
for (String date : strDate) {
calendar.setTime(sdf.parse(date));
calendar.add(Calendar.DATE, day);
formatDateList.add(sdf.format(calendar.getTime()));
}
} catch (ParseException e) {
e.printStackTrace();
}
return formatDateList;
}
6.處理多個時間段間隔某個時段的時間點
/**
* 處理時間段內的時間點
*
* @param each_time 時間間隔(分鐘)
* @param time 時間段中間用,隔開2018-08-08 15:04,2018-08-08 18:04
* @return
*/
public List<String> handleTime(int each_time, String... time) {
List<String> formatDateList = new ArrayList<>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
try {
for (String times : time) {
String timer[] = times.split("-");
long startTime = sdf.parse(timer[0]).getTime();
Long endTime = sdf.parse(timer[1]).getTime();
while (startTime <= endTime) {
formatDateList.add(sdf.format(new Date(startTime)));
startTime += 60 * 1000 * each_time;
}
}
} catch (ParseException e) {
e.printStackTrace();
}
return formatDateList;
}