将 12 小时日期/时间转换为 24 小时日期/时间

2023-11-22

我有一个制表符分隔文件,其中每条记录都有一个 12 小时格式的时间戳字段:

月/日/年 时:分:秒 [AM|PM]。

我需要快速将这些字段转换为 24 小时时间:

月/日/年 HH:mm:ss。

最好的方法是什么?我在 Windows 平台上运行,但除了常用的 Windows 工具之外,我还可以访问 sed、awk、perl、python 和 tcl。


使用 Perl 和手工制作的正则表达式代替 strptime 等工具:

#!/bin/perl -w
while (<>)
{
    # for date times that don't use leading zeroes, use this regex instead:
    # (?:\d{1,2}/\d{1,2}/\d{4} )(\d{1,2})(?::\d\d:\d\d) (AM|PM)
    while (m%(?:\d\d/\d\d/\d{4} )(\d\d)(?::\d\d:\d\d) (AM|PM)%)
    {
        my $hh = $1;
        $hh -= 12 if ($2 eq 'AM' && $hh == 12);
        $hh += 12 if ($2 eq 'PM' && $hh != 12);
        $hh = sprintf "%02d", $hh;
        # for date times that don't use leading zeroes, use this regex instead:
        # (\d{1,2}/\d{1,2}/\d{4} )(\d{1,2})(:\d\d:\d\d) (?:AM|PM)
        s%(\d\d/\d\d/\d{4} )(\d\d)(:\d\d:\d\d) (?:AM|PM)%$1$hh$3%;
    }
    print;
}

这非常繁琐 - 但每行也可能转换多个时间戳。

请注意,AM/PM 到 24 小时制的转换并非易事。

  • 上午 12:01 --> 00:01
  • 下午 12:01 --> 12:01
  • 上午 01:30 --> 01:30
  • 下午 01:30 --> 13:30

现在测试:

perl ampm-24hr.pl <<!
12/24/2005 12:01:00 AM
09/22/1999 12:00:00 PM
12/12/2005 01:15:00 PM
01/01/2009 01:56:45 AM
12/30/2009 10:00:00 PM
12/30/2009 10:00:00 AM
!

12/24/2005 00:01:00
09/22/1999 12:00:00
12/12/2005 13:15:00
01/01/2009 01:56:45
12/30/2009 22:00:00
12/30/2009 10:00:00

Added:

In JavaScript 中 AM/PM 时间和 24 小时时间之间转换的简单方法是什么,提供了另一种转换算法:

$hh = ($1 % 12) + (($2 eq 'AM') ? 0 : 12);

只需一项测试...可能更整洁。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 12 小时日期/时间转换为 24 小时日期/时间 的相关文章

随机推荐

  • 求大 n 和 k 模 m 的二项式系数

    我想计算 nCk mod m 具有以下约束 n k m 10 9 7 我读过这篇文章 但这里 m 的值为 1009 因此 使用卢卡斯定理 我们只需要计算 1009 1009 个不同的 aCb 值 其中 a b 如何在上述限制下做到这一点 我
  • Ext JS 点击事件

    我有以下事件 Ext onReady function Ext select gallery item img on click function e Ext select gallery item removeClass gallery
  • 引擎“节点”与此模块不兼容。预期版本“12.x”。得到“14.8.0”

    我尝试做一个yarn add 但我有这个错误 The engine node is incompatible with this module Expected version 12 x Got 14 8 0 运行这些命令 sudo npm
  • 处于调试视图,程序终止后,切换回 Eclipse 中的 Java 视图

    我正在寻找一种在我正在调试的应用程序结束后返回到 Eclipse 中的标准 Java 视图的方法 有可能做到这一点吗 这是其他一些 IDE 例如 Visual Studio 中的默认行为 我更愿意这样做 必须再次手动将视图切换到初始视图 这
  • 在 OSX 上安装 Typesafe 激活器

    我正在尝试安装类型安全激活器 scala AKKA play 框架 激活器 我有优胜美地 OSX 我的 bash 是 Oh my ZSH 我已经安装并导出了 JDK 1 7 我下载并解压了文件 typesafe activator 1 2
  • 多维数组上的 json_encode() - 使用字符串键

    我正在使用 PHP 创建一个非常大的多维数组 每个对象包含名称 ID ParentID 和 Children Children 是具有相同格式的更多对象的数组 命名每个对象的 ID 至关重要 这有助于我将每个对象置于正确的父对象下 在下面的
  • Matlab 的 Demcmap 的 Python 等效项(海拔 +/- 适当的颜色图)

    我正在寻找一种方法来获得适当的海拔颜色图matplotlib 的cmap terrain 看起来很棒 但颜色缩放不是基于零 即 如果比例为 0 gt 5000m 则 0 gt 1000m 范围可能是蓝色阴影 您会认为这是海平面以下的情况 f
  • 如何使表格单元格的背景透明

    我正在为我的 所有用户 页面创建一个表 第一个表分为两部分 广告和用户 在 用户 表内 tr td td tr 我为每个用户的数据创建了另一个表以通过 php 显示 这是图片 http postimg org image 3mbeyb411
  • c中的“short int”和“short”有什么区别? [复制]

    这个问题在这里已经有答案了 将变量声明为short int 和short 有什么区别 在gcc编译器中 short占用2个字节 用sizeof short 检查 并且short int也给出了2个字节的大小 两者是否相同或不同 在这种情况下
  • 如何在 JavaScript 中获取 HTML 元素的样式值?

    我正在寻找一种方法 从通过样式标签设置样式的元素中检索样式 在身体里 div div 我正在寻找不使用库的直接 JavaScript 我尝试了以下操作 但一直收到空白 alert document getElementById box st
  • 如何从子例程中不返回任何内容?

    我想在执行下一步之前验证一个条件 但只发出警告并跳过当前值而不是死掉 如何重写 validate me 子例程而不返回任何值 Update 请注意 以下代码按预期工作 只是我想要其他东西 而不是从 validate me 返回 1 或 0
  • 保存图像,然后在 Swift (iOS) 中加载它

    我正在使用 saveImage 保存图像 func saveImage image UIImage path String gt Bool let pngImageData UIImagePNGRepresentation image le
  • d3.js 构建矩形网格

    我正在尝试在 d3 js 中构建一个矩形网格 网格有 7 行 一周中的几天 和 24 列 一天中的小时 以下代码仅绘制 行 列 天0 小时0 第 1 天 1 小时 第 2 天 第 2 小时 第 3 天 第 3 小时 第 4 天 第 4 小时
  • R 分组显示所有因子水平的计数,即使 dplyr 为零

    set seed 1 dat lt data frame ID sample letters 50 rep TRUE dat gt group by ID gt summarise no rows length ID 我有上面的代码 它创建
  • 了解 Java 内存模型和垃圾收集 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我经常会收到很多学生或寻找
  • 从 GCE VM 分离启动磁盘

    我正在尝试从 GCE 虚拟机分离启动磁盘 由于虚拟机已停止 因此它应该允许我将其分离 但它返回此错误 UNSUPPORTED OPERATION Hot remove of the root disk is not supported 有什
  • 如何只加载最后一个分区的数据

    我有一些数据是这样分区的 data year 2016 month 9 version 0 data year 2016 month 10 version 0 data year 2016 month 10 version 1 data y
  • 以编程方式实例化 Sharepoint 中的 Web 部件页面

    是否有一种简单的方法可以使用对象模型或 Web 服务以编程方式将 Web 部件页面添加到 Sharepoint 站点 以这种方式创建列表和添加 Web 部件似乎很简单 但我找不到如何创建内容页面的示例 编辑 对于普通的 WSS 安装 不是
  • Java 中的加权线性回归

    有谁知道 Java 中的科学 数学库可以直接实现加权线性回归吗 类似于接受 3 个参数并返回相应系数的函数 linearRegression x y weights 这看起来相当简单 所以我想它存在于某个地方 PS 我尝试过弗兰尼根的图书馆
  • 将 12 小时日期/时间转换为 24 小时日期/时间

    我有一个制表符分隔文件 其中每条记录都有一个 12 小时格式的时间戳字段 月 日 年 时 分 秒 AM PM 我需要快速将这些字段转换为 24 小时时间 月 日 年 HH mm ss 最好的方法是什么 我在 Windows 平台上运行 但除