码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • linux时区相关


    • 背景:用linux自带的时间接口函数读取时间的时候,发现有时候时间与北京时间不符合,经过研究发现:时间 = UTC时间+时区带来的偏移。
    • 操作方法:timedatectl list-timezones可看支持的时区
    • 改时区方法有如下两种:
    1. ln -sf /usr/bin/Shanghai /etc/localtime       // /usr/bin/Shanghai一般是ubuntu自带。
    2. timedatectl set-timezone Asia/Shanghai
    • date命令里有时区参数: CST代表中国标准时间。等于UTC+8

    时间接口文档

    time(2) - Linux manual page

    //接口时间变化

    深入理解Linux时间子系统(0.7)_城中之城的博客-CSDN博客_linux时间子系统

    • 配置 /etc/localtime 文件,链接到/usr/bin/Shanghai文件 (ln -sf /etc/localtime Shanghai) [Shanghai需要写为当前系统文件,可用ubuntu的/usr/bin/Shanghai文件]
    • timedatectl命令:可看到时间和时区
    1. root@pc123:/# timedatectl
    2. Local time: Wed 2020-12-16 18:33:37 UTC
    3. Universal time: Wed 2020-12-16 18:33:37 UTC
    4. RTC time: Thu 1970-01-01 01:08:42
    5. Time zone: UTC (UTC, +0000)
    6. System clock synchronized: no
    7. NTP service: active
    8. RTC in local TZ: no
    • 时间

    需要注意图中虚线的部分表示这个时间受到时区的影响!!!,

    即localtime,mktime,strftime函数受到环境变量TZ的影响

    而时区可通过tzset和设置环境变量去影响localtime

    • 工具timedatectl 即可查看系统时间和时区
    1. root@pc123:/usrdata# timedatectl
    2. Local time: Wed 2020-12-16 18:54:43 UTC
    3. Universal time: Wed 2020-12-16 18:54:43 UTC
    4. RTC time: Thu 1970-01-01 01:29:55
    5. Time zone: UTC (UTC, +0000)
    6. System clock synchronized: no
    7. NTP service: active
    8. RTC in local TZ: no
    • timedatectl list-timezones   //查看当前支持的时区
    • hwclock -w    保存到rtc时间
    • 时区如何设置?

    gettimeofday和settimeofday可读取/设置时间,时区。

    时间相关的系统调用和实现原理

    clock_gettime:系统调用到调用do_clock_gettime

    --->ktime_get_real_ts64

    ---->一步步跟进去发现是调用timekeep的 nsecs = timekeeping_get_ns(&tk->tkr_mono);

    1. int do_clock_gettime(clockid_t which_clock, struct timespec64 *tp)
    2. {
    3. switch (which_clock) {
    4. case CLOCK_REALTIME:
    5. ktime_get_real_ts64(tp);
    6. break;
    7. case CLOCK_MONOTONIC:
    8. ktime_get_ts64(tp);
    9. break;
    10. case CLOCK_BOOTTIME:
    11. get_monotonic_boottime64(tp);
    12. break;
    13. default:
    14. return -EINVAL;
    15. }
    16. return 0;
    17. }

  • 相关阅读:
    【大数据处理技术】实验10 :Flink编程实践
    管理经济学基本概念(六): 拍卖、串通投标、垂直关系管理
    前端网络框架Bootstrap教程|Front-End Web UI Frameworks and Tools: Bootstrap4
    淘宝购物车分页方案研究
    C#根据excel文件中的表头创建数据库表
    工作心得——css让元素居中的方法
    【WLAN】Android 13 p2p / wifi direct介绍
    【Milvus的人脸检索】
    java-net-php-python-5java酒店房间预订系统计算机毕业设计程序
    【应用前沿】360QPaaS 精彩亮相首届中国航空制造设备博览会 | 数智航空
  • 原文地址:https://blog.csdn.net/m0_37844072/article/details/127317347
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号