AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 14668
Accepted
Jax
Jax
Asked: 2009-05-30 07:03:52 +0800 CST2009-05-30 07:03:52 +0800 CST 2009-05-30 07:03:52 +0800 CST

与纪元时间相互转换

  • 772

我经常发现自己需要从一种时间类型转换到另一种时间类型,并且还没有找到一种我一直满意的方式。每次我做一个快速的谷歌搜索,我都会想出不同的(有时非常复杂)的答案。

我很高兴

date -d "Sep 5 1986" "+%s"

用于将标准日期转换为纪元时间,但我似乎无法进行反向工作(而且我浏览过的手册页并没有太大帮助。)

date -d "526276800" "+%m/%d/%y"

在我的 RHEL 5 安装中产生错误。

社区可以为我提供一些轻松来回转换的策略吗?我将采用所有形式:awk、perl、日期。每种方法的优缺点是什么?

time
  • 9 9 个回答
  • 8523 Views

9 个回答

  • Voted
  1. Best Answer
    Shaw
    2009-05-30T07:07:59+08:002009-05-30T07:07:59+08:00

    日期 -d @526276800 "+%m/%d/%y"

    • 7
  2. mouviciel
    2009-05-30T07:08:44+08:002009-05-30T07:08:44+08:00

    在我的 Mac OS X 机器上,我使用:

    date -r 526276800 +%m/%d/%y
    
    • 4
  3. Jason Tan
    2009-05-30T08:51:49+08:002009-05-30T08:51:49+08:00

    使用 GNU 日期:

    日期 -d '1970-01-01 946684800 秒'

    • 1
  4. mavam
    2009-05-30T10:10:55+08:002009-05-30T10:10:55+08:00

    或者在 Ruby 中:

    % ruby -e 'puts Time.now.to_f'
    1243620267.8988
    
    % ruby -e 'puts Time.now.to_i'
    1243620267
    
    % ruby -e 'puts Time.at 1243620270'
    Fri May 29 11:04:30 -0700 2009
    
    % ruby -e 'puts Time.at(1243620270).strftime "at %I:%M%p"'
    at 11:04AM
    

    以下是strftime从 rubyTime​​ 类文档中获取的格式:

      %a - The abbreviated weekday name (``Sun'')
      %A - The  full  weekday  name (``Sunday'')
      %b - The abbreviated month name (``Jan'')
      %B - The  full  month  name (``January'')
      %c - The preferred local date and time representation
      %d - Day of the month (01..31)
      %H - Hour of the day, 24-hour clock (00..23)
      %I - Hour of the day, 12-hour clock (01..12)
      %j - Day of the year (001..366)
      %m - Month of the year (01..12)
      %M - Minute of the hour (00..59)
      %p - Meridian indicator (``AM''  or  ``PM'')
      %S - Second of the minute (00..60)
      %U - Week  number  of the current year,
              starting with the first Sunday as the first
              day of the first week (00..53)
      %W - Week  number  of the current year,
              starting with the first Monday as the first
              day of the first week (00..53)
      %w - Day of the week (Sunday is 0, 0..6)
      %x - Preferred representation for the date alone, no time
      %X - Preferred representation for the time alone, no date
      %y - Year without a century (00..99)
      %Y - Year with century
      %Z - Time zone name
      %% - Literal ``%'' character
    
    • 1
  5. user5692
    2009-05-30T10:15:23+08:002009-05-30T10:15:23+08:00
    $ perl -le 'print scalar localtime 1243620900'
    Fri May 29 11:15:00 2009
    
    • 1
  6. palmer
    2009-05-30T07:07:20+08:002009-05-30T07:07:20+08:00

    这可能有点繁重,但在 perl 中有一个名为 DateTime 的很棒的模块,它可以在无数的日期和时间格式之间来回转换,包括纪元。使用非常简单:

    http://datetime.perl.org/

    • 0
  7. wzzrd
    2009-05-30T07:09:15+08:002009-05-30T07:09:15+08:00

    就个人而言,我为此选择使用 Python 和 bash。但是,既然您对此感到恼火;-) 我会制作一个小脚本,该脚本将日期作为参数并将其编写为具有--2epoch 和--2normal 选项。

    这样,您可以使用

    ./script.sh --2normal 1243609635
    

    反之亦然

    ./script --2epoch "20090529 17:07"
    

    输入日期的格式是否总是相同的?这将使脚本更容易编写。

    • 0
  8. Cloaked1
    2009-05-30T09:51:45+08:002009-05-30T09:51:45+08:00

    Perl 单行:

    $ perl -MDate::Manip -le 'print UnixDate(ParseDateString("epoch".shift()),"%c")' 946684800

    • 0
  9. ericslaw
    2009-06-05T11:52:30+08:002009-06-05T11:52:30+08:00

    从时代:

    将纪元时间戳从标准输入(第一个示例)或作为 args(第二个示例)转储为可读形式,不要忘记 strftime 的强大功能!

    perl -pe '$_=~s/(\d{10})/scalar localtime($1)/eg'

    perl -e '$s=join(" ",@ARGV);$s=~s/(\d{10})/scalar localtime($1)/eg;print"$s\n"'

    perl -pe 'use POSIX qw(strftime);s/(\d{10,10})/strftime("%Y%m%d-%H:%M:%S",$1)/eg'

    时代:

    如果你为 perl 安装了 Date::Manip 模块(默认情况下通常是 ISNT),你可以使用:

    perl -MDate::Manip -e '$stamp=UnixDate(ParseDate(join(" ",@ARGV)),"%s");printf"%d %s\n",$stamp,scalar localtime($stamp)' sep 9 2006

    有时很难决定是否要替换“过滤器”中的时间戳,或者是否要使用找到的时间戳作为行的开头。我在那个上来回翻转。

    • 0

相关问题

  • 你使用什么样的时间管理系统?

  • 时间同步和计划任务

  • 时间漂移

  • 让 Windows Vista 使用我们的域服务器的时间

  • Windows Server 无法可靠地同步 NTP 时间

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve