前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >生信服务器 | Linux 时间戳和标准时间

生信服务器 | Linux 时间戳和标准时间

作者头像
章鱼猫先生
发布2021-10-15 12:14:55
2.9K0
发布2021-10-15 12:14:55
举报
文章被收录于专栏:BioIT爱好者

在 Linux 系统中,有许多场合都使用时间戳的方式表示时间,即从1970年1月1日起至当前的天数或秒数。如/etc/shadow里的密码更改日期和失效日期,还有代理服务器的访问日志对访问时间的记录等等。

对于不管是单台还是集群式的生信服务器,一个大任务长时间运行,设置和分析处理 log,对于任务的稳健持续运行很判断都非常有帮助,而这一切都需要和服务器的时间戳、标准时间息息相关。

关于时间格式的解释

  • UTC (Universal Time Coordinated,UTC),世界协调时间
  • CST (China Standard Time UTC+8:00),中国沿海时间(北京时间)
  • GMT (Greenwich Mean Time),林威治标准时间
  • EST (Eastern Standard Time),美国东部时间

查看 Linux 系统时区

1. 使用传统的 date 命令

Linux 下使用传统的date命令,会自动打印出当前时间和时区缩写。

代码语言:javascript
复制
[shenweiyan@ecs-steven ~]# date
Wed Jan 20 09:55:04 CST 2021
代码语言:javascript
复制
[shenweiyan@cloudraft-bioitee ~]# date
Tue Jan 19 20:55:51 EST 2021

或者,你也可以使用下面的命令。其中%Z格式可以输出字符形式的时区,而%z输出数字形式的时区:

代码语言:javascript
复制
[shenweiyan@ecs-steven ~]# date +"%Z %z"
CST +0800
代码语言:javascript
复制
[shenweiyan@cloudraft-bioitee ~]# date +"%Z %z"
EST -0500

2. 使用 timedatectl 命令

当你不带任何参数运行它时,这条命令可以像下图一样,输出系统时间概览,其中包含当前时区:

代码语言:javascript
复制
timedatectl

然后,你可以在命令中提供一条管道,然后用 grep 命令来像下面一样,只过滤出时区信息:

代码语言:javascript
复制
[shenweiyan@cloudraft-bioitee ~]#  timedatectl | grep "Time zone"
       Time zone: America/New_York (EST, -0500)

同样,我们可以学习如何使用timedatectl来设置 Linux 时区。例如:

代码语言:javascript
复制
sudo timedatectl set-timezone 'Asia/Shanghai'

时间戳格式和标准时间格式互转

下面介绍几种时间戳格式和标准时间格式转换的方法。

需要注意,Linux 下如果每个用户对应的时区如果不一样,他们获取的时间戳、标准时间也会不一样,虽然转换的方法是一样的,但注意不要跨时区去转换,即在 CST 中获取的时间戳和标准时间不要在 CST 以外的时区进行转换。如果非要转换,一定要加上时区的差异。

1. 分别以标准格式和时间戳来显示当前时间

使用 Linux 自带的date命令,分别以标准格式和时间戳来显示当前时间。

代码语言:javascript
复制
[shenweiyan@ecs-steven ~]# date
Wed Jan 20 09:30:54 CST 2021
[shenweiyan@ecs-steven ~]# date +%s
1611106272

2. 显示指定时间的时间戳

使用 Linux 自带的date命令,显示指定时间的时间戳。

代码语言:javascript
复制
[shenweiyan@ecs-steven ~]# date -d "2021-01-20 10:25:30" +%s
1611109530

3. 将时间戳转换为标准时间格式

方法 1:使用 date 命令
代码语言:javascript
复制
[shenweiyan@ecs-steven ~]# date -d '@1611109530'
Wed Jan 20 10:25:30 CST 2021
代码语言:javascript
复制
[shenweiyan@ecs-steven ~]# date -d "1970-01-01 utc 1611109530 seconds"
Wed Jan 20 10:25:30 CST 2021
代码语言:javascript
复制
[shenweiyan@ecs-steven ~]# date -d "1970-01-01 18647 days" "+%Y/%m/%d %H:%M:%S"
2021/01/20 00:00:00
代码语言:javascript
复制
[shenweiyan@ecs-steven ~]# date -d "@1611109530" +"%Y%m%d %H:%M:%S"
20210120 10:25:30
代码语言:javascript
复制
[shenweiyan@ecs-steven ~]# date -d "@1611109530" +"%F %H:%M:%S"
2021-01-20 10:25:30
代码语言:javascript
复制
[shenweiyan@ecs-steven ~]# date -d "1970-01-01 utc 1611109530 seconds" +"%F %H:%M:%S"
2021-01-20 10:25:30
方法 2:使用 awk 里的时间函数
代码语言:javascript
复制
[shenweiyan@ecs-steven ~]# echo "1611109530" |awk '{print strftime ("%F %T",$0)}'
2021-01-20 10:25:30
方法 3:使用 perl 处理
代码语言:javascript
复制
[shenweiyan@ecs-steven ~]# perl -e 'print localtime(1279592730)."\n";'
Tue Jul 20 10:25:30 2010
方法 4:使用 python 处理
代码语言:javascript
复制
[shenweiyan@ecs-steven ~]# python -c "import time; print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(1611109530)))"
2021-01-20 10:25:30

—END—

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-01-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 BioIT爱好者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 关于时间格式的解释
  • 查看 Linux 系统时区
    • 1. 使用传统的 date 命令
      • 2. 使用 timedatectl 命令
      • 时间戳格式和标准时间格式互转
        • 1. 分别以标准格式和时间戳来显示当前时间
          • 2. 显示指定时间的时间戳
            • 3. 将时间戳转换为标准时间格式
              • 方法 1:使用 date 命令
              • 方法 2:使用 awk 里的时间函数
              • 方法 3:使用 perl 处理
              • 方法 4:使用 python 处理
          相关产品与服务
          云服务器
          云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档