使用 DateFormatter(日期格式化程序)显示本地时区缩写



我有一个日期格式化程序,它以"2:00pm格式输出日期,Thu 18 Oct"

static func scheduleFormatter() -> DateFormatter {
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale(identifier: "en_US_POSIX")
dateFormatter.amSymbol = "am"
dateFormatter.pmSymbol = "pm"
dateFormatter.dateFormat = "h:mma, EE dd MMM"
return dateFormatter
}

我需要添加用户的本地时区缩写,以便字符串看起来像"2:00 pm GMTThu 18 Oct".我该怎么做?

查看 Unicode 日期格式模式:

可能你想要模式v

简短的通用非位置格式。如果不可用,则回退到通用位置格式("VVVV"(,然后回退到简短的本地化 GMT 格式作为最终回退。

z

简短的特定非位置格式。如果不可用,则回退到简短的本地化 GMT 格式 ("O"(。

请注意,时区名称与语言相关,设置posix区域设置可能会破坏它。

您也可以直接要求提供缩写,并将其明确包含在您的格式中:

"h:mma, '(TimeZone.current.abbreviation() ?? "")' EE dd MMM"

要显示时区,您只需在 dateFormat 字符串中添加 "zzz" 即可。例如:"h:mma zzz, EE dd MMM">

public static Date getCurrentTimeStampDate(({

String currentDate = new SimpleDateFormat(""yyyy:MM:dd HH:mm:ss").format(Calendar.getInstance(TimeZone.getTimeZone("GMT")).getTime());  
SimpleDateFormat formater = new SimpleDateFormat(""yyyy:MM:dd HH:mm:ss");
try {
return formater.parse(currentDate);
} catch (ParseException e) {

return null;  
}
}

最新更新