gpt4 book ai didi

java - Java 条件时间格式化

转载 作者:行者123 更新时间:2023-12-01 11:14:46 26 4
gpt4 key购买 nike

我正在尝试使用 Javas GregorianCalendarSimpleDateFormat 类来创建时间序列。

我使用的原始数据采用简单的纪元格式(Unix 时间),我将所有这些时间戳转换为可读的时间和日期。

但是,如果我的时间序列范围从 23.00 到 01.00(即日期在中间某个位置发生变化),我希望我的输出能够反射(reflect)这一点。

示例:

{"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();
}

}

关于java - Java 条件时间格式化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31969332/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com