You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Perl如何将带pm的12小时制日期转换为24小时制gmtime格式

Perl 12小时制日期转24小时制实现方案

你原代码存在两处核心错误:

  • qw[$date]用法错误:qw()会将内部内容按字面量解析为字符串列表,不会识别变量,你写的qw[$date]实际得到的是字符串'$date',而非变量存储的日期值,不需要额外用qw包裹变量。
  • strptime输入格式符不匹配:待解析的日期结构为「英文月份缩写 日期 四位数年份 12小时制时间+am/pm标识」,你使用的%H%p完全无法匹配该结构,正确的格式符组合为%b %d %Y %I:%M%p:
    • %b:匹配英文月份缩写(如Jun)
    • %d:匹配两位数日期
    • %Y:匹配四位数年份
    • %I:匹配12小时制的小时数(不能用24小时制解析符%H)
    • %M:匹配分钟数
    • %p:匹配am/pm标识

可运行正确代码

#!/usr/bin/perl 
use strict; 
use warnings; 
use feature 'say';
# 如需兼容非英文 locale 可打开下方两行注释
# use POSIX;
# POSIX::setlocale(POSIX::LC_TIME, 'en_US.UTF-8');
use Time::Piece; 

my $date = "Jun 19 2019 11:08pm"; 
# 按输入结构解析日期
my $time = Time::Piece->strptime($date, '%b %d %Y %I:%M%p');
# 输出指定格式的24小时制日期
say $time->strftime('%b %d %Y %H:%M');

运行上述代码即可得到预期输出Jun 19 2019 23:08。

内容的提问来源于stack exchange,提问作者Apfelkuchen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 20:06:05