【问题标题】:Unix-compatible Perl command [closed]与 Unix 兼容的 Perl 命令 [关闭]
【发布时间】:2018-03-15 01:15:48
【问题描述】:

我现在正在做的代码是将日期/时间戳转换为毫秒。

日期参数在我的 Unix 机器上不起作用,例如 -d 我收到一条错误消息 (日期:非法选项--d 用法:日期 [-u] [+字段描述符])。

所以要求如下,我有一个以下格式的输入日期,我想将其转换为毫秒。示例

Input Date = 2017-09-19 19:36:12.763
Output (in milliseconds) = 1567299281726 (something similar)

希望现在有意义吗?

【问题讨论】:

  • 对不起,什么?请edit您的问题并再次告诉我们您需要什么帮助。你的问题没有问题。如果您在英语方面遇到问题,请使用 Google 翻译并以您的母语正常书写。这对我们来说可能更容易理解。
  • 你是说你想要一种不使用 Perl 将日期时间字符串转换为毫秒的方法吗?
  • 这是我的输入日期 = 2017-09-19 19:36:12.763 我希望以这种格式输出输出(以毫秒为单位)= 1567299281726(类似的东西)。
  • 鲍罗丁是的,没错!!
  • 您是否还说:(1)date 参数在您的系统上不起作用(2)您不想使用 Perl ...?您如何获得“输入日期”? (这是一些外壳吗?)你在什么系统上?

标签: shell perl unix posix


【解决方案1】:

与您的 perl 命令类似,GNU date 命令不处理毫秒。你可以这样做(在 bash 或 ksh 中)

input_date="2017-09-19 19:36:12.763"
IFS=. read -r datetime milliseconds <<<"$input_date"
date -d "$datetime" "+%s$milliseconds"
1505864172763

然后,走另一条路:

timestamp=1505864172763
milliseconds=$(( timestamp % 1000 ))
date -d "@$((timestamp / 1000))" "+%F %T.$milliseconds"
2017-09-19 19:36:12.763

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-21
    • 2011-11-11
    • 2021-12-05
    • 2012-12-28
    • 2010-11-17
    • 2013-09-05
    • 2012-04-20
    • 2013-09-01
    相关资源
    最近更新 更多