gpt4 book ai didi

java - 解析和格式化日期

转载 作者:行者123 更新时间:2023-11-29 19:12:29 25 4
gpt4 key购买 nike

<分区>

我有以下代码以字符串形式获取日期 yyyy-MM-dd HH:mm:ss (UTC 时区)并将其转换为 EEEE d(st , nd, rd, th) MMMM yyyy HH:mm(设备的默认时区)。

但是,我的问题是代码看起来凌乱且效率低下。有没有一种方法可以实现我想要的,而无需多次格式化和解析相同的日期以提高效率?或者其他改进?

最好支持 Android API 级别 14。


String inputExample = "2017-06-28 22:44:55";

//Converts UTC to Device Default (Local)
private String convertUTC(String dateStr) {
try {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
df.setTimeZone(TimeZone.getTimeZone("UTC"));
Date temp = df.parse(dateStr);
df.setTimeZone(TimeZone.getDefault());
String local = df.format(temp);
Date localDate = df.parse(dateStr);
SimpleDateFormat outputDF1 = new SimpleDateFormat("EEEE ");
SimpleDateFormat outputDF2 = new SimpleDateFormat(" MMMM yyyy HH:mm");
return outputDF1.format(temp) + prefix(local) + outputDF2.format(temp);
} catch(java.text.ParseException pE) {
Log.e("", "Parse Exception", pE);
return null;
}
}

private String prefix(String dateStr) {
try {
SimpleDateFormat outputDF = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date temp = outputDF.parse(dateStr);
SimpleDateFormat df = new SimpleDateFormat("d");
int d = Integer.parseInt(df.format(temp));
if(1 <= d && d <= 31) {
if(11 <= d && d <= 13)
return d + "th";
switch (d % 10) {
case 1: return d + "st";
case 2: return d + "nd";
case 3: return d + "rd";
default: return d + "th";
}
}
Log.e("", "Null Date");
return null;
} catch(java.text.ParseException pE) {
Log.e("", "Parse Exception", pE);
return null;
}
}

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