Laravel:转换第三方API日期时间格式以存入数据库
日期时间格式转换解决方案
针对你需要将July, 17 2020 09:29:00-0500转换为2020-07-17 09:29:00-0500(注:你示例中的目标年份2022应为笔误,以下按原始年份处理)的需求,下面提供几种主流编程语言的实现方案:
Python
使用标准库datetime即可完成解析与格式化:
from datetime import datetime original_date = "July, 17 2020 09:29:00-0500" # 解析原始格式:%B匹配完整月份名,%z匹配时区偏移 parsed_dt = datetime.strptime(original_date, "%B, %d %Y %H:%M:%S%z") # 输出目标格式 formatted_dt = parsed_dt.strftime("%Y-%m-%d %H:%M:%S%z") print(formatted_dt) # 输出: 2020-07-17 09:29:00-0500
JavaScript
原生Date对象结合字符串处理即可实现,若需更复杂场景可使用date-fns等库:
const originalStr = "July, 17 2020 09:29:00-0500"; const date = new Date(originalStr); // 提取日期部分(ISO格式的日期段) const dateSegment = date.toISOString().split('T')[0]; // 提取时分秒(24小时制) const timeSegment = date.toLocaleTimeString('en-US', { hour12: false, hour: '2-digit', minute: '2-digit', second: '2-digit' }); // 直接保留原始时区偏移,避免时区转换 const timezoneSegment = originalStr.slice(-5); const formattedStr = `${dateSegment} ${timeSegment}${timezoneSegment}`; console.log(formattedStr); // 输出: 2020-07-17 09:29:00-0500
Java(Java 8+)
使用java.time包的ZonedDateTime和DateTimeFormatter处理:
import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; public class DateFormatConverter { public static void main(String[] args) { String originalDate = "July, 17 2020 09:29:00-0500"; // 定义输入格式解析器 DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("MMMM, dd yyyy HH:mm:ssZ"); ZonedDateTime zonedDateTime = ZonedDateTime.parse(originalDate, inputFormatter); // 定义输出格式 DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ssZ"); String formattedDate = zonedDateTime.format(outputFormatter); System.out.println(formattedDate); // 输出: 2020-07-17 09:29:00-0500 } }
关键注意点
- 时区偏移:直接保留原始的
-0500,避免因时区转换导致时间偏差; - 月份匹配:确保解析器能识别完整英文月份名(如
July); - 年份一致性:你示例中的目标年份2022与原始数据2020不符,上述代码均以原始年份为准,若需手动修改年份可在解析后单独调整日期对象的年份字段。
内容的提问来源于stack exchange,提问作者Hugh Hari
相关产品推荐
相关产品推荐

