如何将指定JSON日期字段转换为MM-dd-yyyy HH:mm:ss格式?
没问题,我来帮你搞定这两个日期格式的转换!针对你给出的两种不同日期字符串,我分别用Java和Python两种常用编程语言来演示如何转换成MM-dd-yyyy HH:mm:ss格式,你可以根据自己的技术栈选择对应的方案。
Java 实现方案
Java 8及以上推荐使用新的日期时间API(java.time包),比旧的SimpleDateFormat更安全、更易用。
处理格式:May 22 12:05:41 UTC 2018
这个格式包含英文月份缩写和UTC时区,我们需要用对应的格式符解析,再转成目标格式:
import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; public class DateConverter { public static void main(String[] args) { String inputDate = "May 22 12:05:41 UTC 2018"; // 定义解析格式:MMM对应英文月份缩写,zzz对应时区 DateTimeFormatter parser = DateTimeFormatter.ofPattern("MMM dd HH:mm:ss zzz yyyy"); ZonedDateTime zonedDt = ZonedDateTime.parse(inputDate, parser); // 定义目标输出格式 DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM-dd-yyyy HH:mm:ss"); String outputDate = zonedDt.format(formatter); System.out.println(outputDate); // 输出:05-22-2018 12:05:41 } }
处理格式:2018-05-22 12:05:41.512
这个格式带毫秒数,解析时需要包含毫秒的格式符,格式化时去掉即可:
import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; public class DateConverter { public static void main(String[] args) { String inputDate = "2018-05-22 12:05:41.512"; // 解析格式包含毫秒(SSS) DateTimeFormatter parser = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"); LocalDateTime localDt = LocalDateTime.parse(inputDate, parser); DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM-dd-yyyy HH:mm:ss"); String outputDate = localDt.format(formatter); System.out.println(outputDate); // 输出:05-22-2018 12:05:41 } }
Python 实现方案
Python用内置的datetime模块就能轻松处理,复杂场景也可以借助dateutil库简化操作。
处理格式:May 22 12:05:41 UTC 2018
使用strptime解析时,%b对应英文月份缩写,%Z对应时区:
from datetime import datetime input_date = "May 22 12:05:41 UTC 2018" # 解析输入格式 dt = datetime.strptime(input_date, "%b %d %H:%M:%S %Z %Y") # 格式化输出目标格式 output_date = dt.strftime("%m-%d-%Y %H:%M:%S") print(output_date) # 输出:05-22-2018 12:05:41
如果遇到时区解析报错(部分环境对%Z支持有限),可以用dateutil.parser来自动识别格式:
from dateutil import parser input_date = "May 22 12:05:41 UTC 2018" dt = parser.parse(input_date) output_date = dt.strftime("%m-%d-%Y %H:%M:%S") print(output_date) # 输出:05-22-2018 12:05:41
处理格式:2018-05-22 12:05:41.512
解析时用%f匹配毫秒数,格式化时自动忽略:
from datetime import datetime input_date = "2018-05-22 12:05:41.512" # 解析包含毫秒的格式 dt = datetime.strptime(input_date, "%Y-%m-%d %H:%M:%S.%f") # 转成目标格式 output_date = dt.strftime("%m-%d-%Y %H:%M:%S") print(output_date) # 输出:05-22-2018 12:05:41
内容的提问来源于stack exchange,提问作者Sun
相关产品推荐
相关产品推荐

