无法找到适配指定日期格式的Dateformatter,求合适解决方案
日期格式适配解决方案
你提供的日期样例2020/04/01T20:00-05:00、2020/03/05T21:45-07:00对应标准格式化串为yyyy/MM/dd'T'HH:mmXXX,各常用开发语言的实现示例如下:
- Java 8+(推荐使用线程安全的DateTimeFormatter)
import java.time.OffsetDateTime; import java.time.format.DateTimeFormatter; public class DateParseDemo { public static void main(String[] args) { String dateSample = "2020/04/01T20:00-05:00"; DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd'T'HH:mmXXX"); OffsetDateTime parsedDate = OffsetDateTime.parse(dateSample, formatter); // 后续可根据需求转换为本地时间或其他格式输出 System.out.println(parsedDate); } }
- Swift(iOS/macOS开发)
let dateSample = "2020/04/01T20:00-05:00" let dateFormatter = DateFormatter() // 固定locale避免系统自定义格式干扰解析 dateFormatter.locale = Locale(identifier: "en_US_POSIX") dateFormatter.dateFormat = "yyyy/MM/dd'T'HH:mmXXX" if let parsedDate = dateFormatter.date(from: dateSample) { print(parsedDate) }
- Python 3.7+
from datetime import datetime date_sample = "2020/04/01T20:00-05:00" formatter = "%Y/%m/%dT%H:%M%z" parsed_date = datetime.strptime(date_sample, formatter) print(parsed_date)
注意事项
- 格式串中的固定字符
T必须用单引号包裹,避免被识别为格式符导致解析失败 - 时区偏移格式不要使用
Z,该格式符仅适配不带冒号的偏移样式(如-0500),你提供的样例带冒号,必须使用XXX(Java/Swift)或%z(Python3.7+)作为时区偏移格式符 - 移动端开发场景必须指定
en_US_POSIX作为locale,防止系统自定义的日期展示规则覆盖预设格式
内容的提问来源于stack exchange,提问作者Saif Ahmad
相关产品推荐
相关产品推荐

