[英]Conditional time formatting Java
我正在嘗試使用Java的GregorianCalendar
和SimpleDateFormat
類創建時間序列。
我使用的原始數據采用簡單的紀元格式(Unix時間),我將所有這些時間戳轉換為可讀的時間和日期。
但是,如果我有一個從23.00到01.00的時間序列(即日期在中間某處更改),則希望我的輸出反映出來。
例:
{"23.00", "23.30", "00.00 2015-08-12", "00.30", "01.00"}
您是否知道SimpleDateFormat
對此有某種支持,或者我可以做些什么來實現此過程的自動化?
謝謝!
這是一些示例代碼。 關鍵部分使用Calendar
類跟蹤日期中的更改。 輸出:
{"23.00", "23.30", "00.00 2015-08-12", "00.30", "01.00", "01.30"}
碼:
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class TS {
// 11PM 2015-08-12
long base=1439348420L;
long[] timestamps = {
base,
base + 1800,
base + 1800*2,
base + 1800*3,
base + 1800*4,
base + 1800*5
};
// MAKE SURE THIS IS IN THE RIGHT TIMEZONE
Calendar cal = Calendar.getInstance();
int lastday;
static DateFormat HHMM = new SimpleDateFormat("\"HH.mm\"");
static DateFormat DATE_HHMM = new SimpleDateFormat("\"HH.mm yyyy-MM-dd\"");
public void run() {
StringBuilder sb = new StringBuilder("{");
for (int i=0; i<timestamps.length; i++) {
if (i>0) sb.append(", ");
sb.append(formattedDate(timestamps[i]));
}
sb.append('}');
System.out.println(sb.toString());
}
public String formattedDate(long unixtime) {
String result = null;
cal.setTimeInMillis(unixtime*1000);
int today = cal.get(Calendar.DAY_OF_MONTH);
if (today != lastday && lastday > 0) {
result = DATE_HHMM.format(cal.getTime());
} else {
result = HHMM.format(cal.getTime());
}
lastday = today;
return result;
}
public static void main(String[] args) {
TS ts = new TS();
ts.run();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.