PHP中如何将邮件头日期转换为可插入MySQL的UTC格式?
优雅转换邮件日期为UTC格式适配MySQL
直接利用PHP的DateTime类就能搞定,它原生支持解析邮件头的RFC2822格式日期,自动处理月份缩写和时区偏移,完全不用繁琐的正则或手动计算:
// 从邮件头获取的日期字符串 $emailDate = "Wed, 26 Oct 2022 16:11:30 -1100"; // 初始化DateTime对象,自动识别原日期的时区 $date = new DateTime($emailDate); // 切换到UTC时区 $date->setTimezone(new DateTimeZone('UTC')); // 输出MySQL兼容的YYYY-MM-DD HH:MM:SS格式 $mysqlDate = $date->format('Y-m-d H:i:s'); // 结果示例:2022-10-27 03:11:30
如果习惯函数式写法,也可以用对应的 procedural 风格函数:
$date = date_create($emailDate); date_timezone_set($date, date_timezone_open('UTC')); $mysqlDate = date_format($date, 'Y-m-d H:i:s');
这个方案的优势在于完全依赖PHP内置的日期处理能力,避免了手动解析带来的错误,代码简洁且可读性高。
内容的提问来源于stack exchange,提问作者Matthew Darnell
相关产品推荐
相关产品推荐

