【Linux】修改linux下的时区和系统时间
距离上次更新本文已经过去了 792 天,文章部分内容可能已经过时,请注意甄别。
用配置文件,修改linux系统下的时区(所用系统 CentOS8)
1.问题来源
在linux上使用python的logging模块的时候,发现了一个问题,那就是模块里面的%(asctime)s
打印的时间并非东八区的时间,而是格林尼治时间,比东八区的时间少了8小时
对于日志来说,这怎么行?总不能每次看日志的时候,自己手动给时间加8小时吧!那样对debug来说可不是什么方便事!
2.解决
百度了一下后,发现是我系统的时区问题。这个Centos系统是用docker安装的,内部的时区没有正常设置
plaintext
1 | date |
通过date命令可以查看系统当前的时间
plaintext
1 | Sat Mar 4 01:29:59 UTC 2023 |
会发现是3月4日的凌晨1点,但实际上我是在上午9点写下的这篇博客
这就需要我们修改时区了!
刚开始,我尝试用tzselect
命令进行时区的选择,再选择了上海时区后,系统的时间还是有问题。然后发现,需要修改文件配置,才能让时间生效
bash
1 | /etc/timezone # 时区的配置 |
而我的系统中,第一个文件压根不存在!
要用下面的两个命令来修改配置文件(root下执行)
bash
1 | echo "Asia/Shanghai" > /etc/timezone |
bash
1 | rm -rf /etc/localtime |
修改完毕,再次执行date
命令,可以看到时间已经正常了
plaintext
1 | Sat Mar 4 09:31:33 CST 2023 |
python的logging模块中打印的时间也正常了
plaintext
1 | [23-03-04 09:31:39] DEBUG:log.py:debug:9 | test in main |
3.python-logging优化
虽然如此,但logging本身其实是可以设置时区的,提供一份简单的模板代码;
在下面的代码中,用了beijing
这个函数来获取东八区的时间,这样这份代码在任何系统上执行,都将会打印东八区的时间了。
python
1 | import logging |
针对replit
这类不支持自定义时区的平台,这样也更方便。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 慕雪的寒舍!
评论