[ZZ]时间处理

Python笔记:日期时间获取与转换 目录世界时、原子时和世界协调时世界时原子时世界协调时epoch time2038问题python timepython获取当前时间标准时间转换为epoch时间epoch时间转换为标准时间python datetime获取当前时间(本地时间)时间格式化timedelta python 日期时间获取与转换 世界时、原子时和世界协调时 世界时 世界时(Universal Time, UT)是根据地球自转周期确定的时间,1s为全年内每日平均长度的1/86400,由于地球绕太阳公转的轨道不是圆的,地球与太阳之间的距离 阅读详情

UNIX及Linux的时间系统是由「新纪元时间」Epoch开始计算起,单位为秒,Epoch则是指定为1970年一月一日凌晨零点零分零秒,格林威治时间。 
目前大部份的UNIX系统都是用32位元来记录时间,正值表示为1970以後,负值则表示1970年以前。我们可以很简单地计算出其时间领域: 

2^31/86400(s) = 24855.13481(天) ~ 68.0958(年) 

1970+68.0958 = 2038.0958 
1970-68.0958 = 1901.9042 

时间领域为[1901.9042,2038.0958]。 

准确的时间为2038年一月十八日星期一晚上十点十四分七秒。那一刻,时间将会转为负数,变成1901年十二月十三日黑色星期五下午三点四十五分五十二秒,然後Jason就会跑出来用斧头砸掉您的电脑。 

这就是所谓的UNIX 2038 BUG,或者您也可戏称为Jason hatchet bug。在大部份的UNIX上,并没有所谓Y2K问题,不过都有2038年问题。 

在一些64位元的平台上,例如Digital Alpha、SGI、Sparc等等,则用64位元来表示时间。 

2^63/86400 ~ 1E14(天) ~ 2.92E11(年) 

大约是292亿年。 

因此,使用64位元的电脑可能会有Armageddon bug的问题。届时位於猎户座旋臂的太阳,已经是黑矮星或暗黑物质,猎户座旋臂大概也已经被重力波震断,银河系大概则已经变成小型似星体了。 

虽然许多人认为UNIX的2038年问题会随着科技的进步,而将电脑逐步汰换成64位元电脑,因此无须担心。但我个人相信,在2038年,依然会 有许多状况出现。因为,就事实而言,目前许多UNIX系统都有足够的能力服役到2038年而毫无问题。因此,如果有意添购电脑主机,而且有预期会使用到那 个时候,最好是选购64位元电脑,确认只有世界末日问题(除非您想要把资料流传给下一个宇宙,那就要另当别论了)。 



--------------------------------------------------------------------------------

取得目前时间 
在所有的UNIX下,都有个time()的函数 
#include  
time_t time(time_t *t); 

这个函数会传回从epoch开始计算起的秒数,如果t是non-null,它将会把时间值填入t中。 

对某些需要较高精准度的需求,Linux提供了gettimeofday()。 
#include  
#include 

 
int gettimeofday(struct timeval * tv,struct timezone *tz); 
int settimeofday(const struct timeval * tv,const struct timezone *tz); 

struct timeval { 
    int tv_sec; 
    int tv_usec; 
}; 

其中tv_sec是由凌晨开始算起的秒数,tv_usec则是微秒(10E-6 second)。 

struct timezone { 
    int tv_minuteswest; 
    int tv_dsttime; 
}; 

tv_minuteswest是格林威治时间往西方的时差,tv_dsttime则是时间的修正方式。 

在Linux下timezone的使用已经废除而不再使用。因为有许多地区都有日光节约时间,日光节约时间的使用与否,往往与无可预测的政治因素相关,没有简单的方法来实作这项设计。 

在sys/time.h中,有三个有用的巨集用於操作timeval: 
#define       timerisset(tvp)  ((tvp)->tv_sec || (tvp)->tv_usec) 
#define       timercmp(tvp, uvp, cmp) 
              ((tvp)->tv_sec cmp (uvp)->tv_sec ||/ 
               (tvp)->tv_sec == (uvp)->tv_sec &&/ 
               (tvp)->tv_usec cmp (uvp)->tv_usec) 
#define       timerclear(tvp) ((tvp)->tv_sec = (tvp)->tv_usec = 0) 

timerisset检查tvp是否有被设定值进去,timercmp比较时间,timerclear设tvp为零。 
cmp为比较操作子如">"、"<"、"=="等等。 

在POSIX.1b的即时处理标准中允许较高的时间解析度。 

struct timespec 
{ 
    long int tv_sec; 
    long int tv_nsec; 
}; 

tv_nsec是nano second(10E-9 second)。 



--------------------------------------------------------------------------------

时间表述 
电脑使用秒及epoch来表示其时间,但对人脑来说实在太残忍一点,大概没有人可以用人脑来计算。因此,UNIX下提供了其它两种基本方式来表述时间,struct tm及文字格式时间。 

struct tm 
{ 
    int tm_sec; 
    int tm_min; 
    int tm_hour; 
    int tm_mday; 
    int tm_mon; 
    int tm_year; 
    int tm_wday; 
    int tm_yday; 
    int tm_isdst; 
}; 

tm_sec表「秒」数,在[0,61]之间,多出来的两秒是用来处理跳秒问题用的。 
tm_min表「分」数,在[0,59]之间。 
tm_hour表「时」数,在[0,23]之间。 
tm_mday表「本月第几日」,在[1,31]之间。 
tm_mon表「本年第几月」,在[0,11]之间。 
tm_year要加1900表示那一年。 
tm_wday表「本第几日」,在[0,6]之间。 
tm_yday表「本年第几日」,在[0,365]之间,闰年有366日。 
tm_isdst表是否为「日光节约时间」。 

struct tm格式时间函数 

struct tm * gmtime(const time_t * t); 
转换成格林威治时间。有时称为GMT或UTC。 

struct tm * localtime(const time_t *t); 
转换成本地时间。它可以透过修改TZ环境变数来在一台机器中,不同使用者表示不同时间。 

time_t mktime(struct tm *tp); 
转换tm成为time_t格式,使用本地时间。 

tme_t timegm(strut tm *tp); 
转换tm成为time_t格式,使用UTC时间。 

double difftime(time_t t2,time_t t1); 
计算秒差。 

文字时间格式函数 

char * asctime(struct tm *tp); 
char * ctime(struct tm *tp); 
这两个函数都转换时间格式为标准UNIX时间格式。 
Mon May 3 08:23:35 1999 

ctime一率使用当地时间,asctime则用tm结构内的timezone资讯来表示。 

size_t strftime(char *str,size_t max,char *fmt,struct tm *tp); 
strftime有点像sprintf,其格式由fmt来指定。 

%a : 本第几天名称,缩写。 
%A : 本第几天名称,全称。 
%b : 月份名称,缩写。 
%B : 月份名称,全称。 
%c : 与ctime/asctime格式相同。 
%d : 本月第几日名称,由零算起。 
%H : 当天第几个小时,24小时制,由零算起。 
%I : 当天第几个小时,12小时制,由零算起。 
%j : 当年第几天,由零算起。 
%m : 当年第几月,由零算起。 
%M : 该小时的第几分,由零算起。 
%p : AM或PM。 
%S : 该分钟的第几秒,由零算起。 
%U : 当年第几,由第一个日开始计算。 
%W : 当年第几,由第一个一开始计算。 
%w : 当第几日,由零算起。 
%x : 当地日期。 
%X : 当地时间。 
%y : 两位数的年份。 
%Y : 四位数的年份。 
%Z : 时区名称的缩写。 
%% : %符号。 

char * strptime(char *s,char *fmt,struct tm *tp); 
如同scanf一样,解译字串成为tm格式。 

%h : 与%b及%B同。 
%c : 读取%x及%X格式。 
%C : 读取%C格式。 
%e : 与%d同。 
%D : 读取%m/%d/%y格式。 
%k : 与%H同。 
%l : 与%I同。 
%r : 读取"%I:%M:%S %p"格式。 
%R : 读取"%H:%M"格式。 
%T : 读取"%H:%M:%S"格式。 
%y : 读取两位数年份。 
%Y : 读取四位数年份。 



--------------------------------------------------------------------------------

进入「冬眠状态」:Sleeping 
unsigned int sleep(unsigned int seconds); 
sleep()会使目前程式陷入「冬眠」seconds秒,除非收到「不可抵」的信号。 
如果sleep()没睡饱,它将会返回还需要补眠的时间,否则一般返回零。 

void usleep(unsigned long usec); 
usleep与sleep()类同,不同之处在於秒的单位为10E-6秒。 

int select(0,NULL,NULL,NULL,struct timeval *tv); 
可以利用select的实作sleep()的功能,它将不会等待任何事件发生。 

int nanosleep(struct timespec *req,struct timespec *rem); 
nanosleep会沉睡req所指定的时间,若rem为non-null,而且没睡饱,将会把要补眠的时间放在rem上。 



--------------------------------------------------------------------------------

定时闹钟:Interval Timers 
定时闹钟一但启动後,会定期送信号给行程,读者最好要解一下signal的处理。 

struct itimerval { 
    struct timeval * it_interval; 
    struct timeval * it_value; 
}; 

unsigned int alarm(unsigned int seconds); 
alarm()会在seconds时,送出SIGALRM信号,这不是「定期」的。 

int getitimer(int which,struct itimerval *val); 
读取which指定的Timer目前状态。 

int setitimer(int which,struct itimerval *val,struct itimerval *old); 
设定which指定的Timer目前状态。 

每个行程都有三个定期闹钟(which参数): 
ITIMER_REAL : 
以系统真实的时间来计算,它送出SIGALRM信号。 

ITIMER_VIRTUAL : 
以该行程真正有执行的时间来计算,它送出SIGVTALRM信号。 

ITIMER_PROF : 
以行程真正有执行及在核心中所费的时间来计算,它送出SIGPROF信号。 

 

 

C++标准库——时间相关 1. time.h和ctime功能:提供了跨平台支持的时间处理函数,满足了一半通用的时间处理相关操作。1.time.hC语言中的原生支持的跨平台时间和日期处理函数以及类型定义。之所以强调快平台,就是因为这些函数和类型定义的通用性。 类型定义:typedef long time_t; //定义了当前时间和日期到1970年1月1日的秒数 typedef long clock_t; //时钟的滴答 阅读详情

相关推荐

ESP8266-通过NTP获取 Epoch/Unix(时间戳)时间

ESP8266-通过NTP获取 Epoch/Unix(时间戳)时间 什么是epoch time? Epoch Time(也称为Unix Epoch、Unix时间、POSIX时间或Unix时间戳)是指从1970年1月1日(UTC/GMT午夜)开始经过的秒数,不包括闰秒(在ISO 8601: 1970-01-01 t00:00:00 . 00z中)。 NTP (Network Time Protocol) NTP是网络时间协议(Network Time Protocol)的缩写,是一个用于计算机系统之间

perseverance51博客 2363

Linux时间处理

 UNIX及Linux的时间系统是由「新纪元时间」Epoch开始计算起,单位为秒,Epoch则是指定为1970年一月一日凌晨零点零分零秒,格林威治时间。  目前大部份的UNIX系统都是用32位元来记录时间,正值表示为1970以後,负值则表示1970年以前。我们可以很简单地计算出其时间领域:  2^31/86400(s) = 24855.13481(天) ~ 68.0958(年)  1970+68.

猪猪乐园 1875

AD在建PCB封装时如何添加元器件的3D模型

3D模型

k1ang的博客 1万+

[翻译]libevent参考手册第五章:辅助类型和函数

[翻译]libevent参考手册第五章:辅助类型和函数   (2011-04-18 21:57:28) 转载 标签:  libevent   网络编程   it 分类: Libevent 译自http://www.wangafu.net/~nickm/libevent-book/Ref5_evutil.h

CrazyCode_Lee的专栏 1469

结合 Conda 手动安装 RepeatMasker

RepeatMasker 是一个广泛使用的生物信息学工具,用于识别和屏蔽(mask)基因组序列中的 重复序列(repeats) 。在使用过程中需要调用重复序列数据库(Repbase 和 Dfam),如果使用Conda安装的话会出现许多问题,因此推荐手动安装。在此记录我手动安装RepeatMasker的流程,希望对各位同学有所帮助。

m0_65437087的博客 2535

AD2S1210与DSP28335 SPI通信中的GPIO配置陷阱与解决

本文深入剖析了AD2S1210与DSP28335进行SPI通信时,因GPIO输入限定配置不当导致数据整体右移的典型问题。文章指出,错误地将MISO引脚配置为带采样周期的同步模式是根本原因,并提供了将输入选择限制正确设置为异步模式的解决方案。同时,总结了不同应用场景下GPIO输入限定的配置原则,为高速同步通信的稳定实现提供了关键指导。

weixin_29163857的博客 146

Python 时间处理详解

Python提供强大的时间处理功能,包含多个实用模块:time用于基础时间操作如时间戳和程序暂停;datetime处理复杂日期时间运算,支持时区转换;dateutil可解析各种日期字符串并进行灵活计算。常见应用包括程序计时、文件时间戳处理和倒计时工具实现。通过time、datetime、dateutil等模块的组合,Python能高效解决各类时间处理需求。

余子越的博客 1568

强化学习 之 Actor Critic

简介 Actor Critic是一种结合体算法: (1)Actor 的前生是 Policy Gradients,这能让它毫不费力地在连续动作中选取合适的动作,而 Q-learning 做这件事会瘫痪; (2)Critic 的前生是 Q-learning 或者其他的 以值为基础的学习法,能进行单步更新,而传统的 Policy Gradients 则是回合更新,这降低了学习效率。 算法思想 Actor...

Test_tju的博客 810

java中关于时间处理相关类的解读(三)

Java中的日期是一个非常复杂的主题,主要涉及到日期的国际化、日期和时间之间的转换、日期的加减运算、日期的展示格式等问题。不过无需担心,在软件开发飞速发展的年代,早已开发了好几代的时间处理类API,接下来带大家纵向深入了解一下这些时间类,看完你就会对时间对象有个系统的认知,再也不用纠结到底用哪个了(心中暗自窃喜,早已笑出鹅叫声,哈哈哈...)。本文将跟随 《java中关于时间处理相关类的解读(二)》的进度,继续介绍Java中的日期类。

凛鼕将至的博客 1425

已经下载了WSL2但Docker依然显示版本过旧无法使用,如何解决?

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!

**My Coding Family** 2906

【WLAN】【调试】再谈如何使用Wireshark解密WiFi数据包——使用TK信息

- 本文介绍了一种wireshark使用TK信息解密空口报文的方式,该方式对是否有关联过程的报文没有要求。

一介草民,只为生活。 1187

编程笔记 Golang基础 043 时间处理

时间处理在软件开发中的重要意义在于保障系统的基础功能正常运作、满足业务需求、提升用户体验、适应分布式环境下的协作,并在多个维度上支撑着系统的高效稳定运行和智能决策。

明月看潮生的博客 1522

【报错】open /var/lib/docker/tmp/docker-import-863402796/bin/json: no such file or directory

然后,通过docker images可以看到镜像已经加载进来了。然后,通过docker images可以看到镜像已经加载进来了。

静谧、淡雅 6222

Java8时间处理

Java8中对世间的处理主要是LocalDate、LocalTime、LocalDateTime这几个类实现,直接看下面的测试代码,注释很详细。 参考:Java8 时间类的使用 还有一个比较常用的就是Date类型和Java8的这些新时间类型的互相转换,请看另外这篇文档:Java 8 中 Date与LocalDateTime、LocalDate、LocalTime互转 /** * ja...

小半的博客 5987

YOLOv11官方代码库与预训练模型下载:介绍Ultralytics官方GitHub及模型权重(yolov11n.pt, yolov11s.pt等)

本文介绍了Ultralytics官方GitHub仓库和YOLOv11预训练模型。Ultralytics仓库是YOLO系列算法的官方实现,包含YOLOv11最新代码、预训练模型、文档和工具。仓库采用清晰的代码结构和活跃的更新策略,支持全流程开发。YOLOv11提供了5种不同规模的模型变体(YOLOv11n/s/m/l/x),在精度、速度和模型大小间权衡,适用于从移动设备到高精度检测等不同场景。各模型在COCO数据集上预训练,可直接使用或微调,满足多样化应用需求。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 5824

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

java 时间处理工具类

1、java 时间处理工具类 package com.meizu.mdsp.common.utils; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.regex.Matche...

两只橙的博客 783

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

关于sqlserver 的时间处理

这里先做一个java时间处理的东西你可以使用 SimpleDateFormat 类,如果日期格式不对,会产生异常。import java.text.*;import java.util.*;public class TestDate {    public static void main(String[] args) {        String dStr = "2001.12.12-08.2

sys53的之随想 1875

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Python 中的时间处理

时间在编程中扮演着至关重要的角色,无论是在记录事件、调度任务,还是在处理数据时,日期和时间的处理都是必不可少的。在 Python 中,有许多强大的工具和库可以帮助我们高效地处理时间。本文将从多个方面介绍 Python 中常用的时间处理操作,涵盖datetime模块、dateutil库、时间戳处理以及时间格式化。

qq_44793283的博客 705

时间处理模块

time&datetime 模块   在平常的代码中,我们常常需要与时间打交道。在python中,与时间处理有关的模块就包括:time, datetime ,calendar(很少用,不讲),下面分别来介绍。   我们写程序时时间的处理可以归为以下3种:      时间的显示,在屏幕显示、纪录日志等     时间的转换,比如把字符串格式的日期转成python中的日期类型。    ...

weixin_30810239的博客 166

joda-time 时间处理工具

一、前言       说到java的时间处理,我们一般用到的有java.util包里面的Date 和 Calendar 类里面的方法。在使用过程中,或多或少也感觉到了其中的不方便。就促使我们一起找一些其他的方法来代替这些。       在本文中,小编就找来了Joda-tim...

哈士奇 3533

linux时间处理,LINUX 系统中的时间处理

2014在程序中时间处理往往是一个麻烦的事,Linux系统提供了很多关于时间处理的函数,我们可以用这些函数来完成我们所需要的功能。那么在程序中一般会关心哪些时间问题呢?真实时间:程序运行的时间,即程序启动到程序消亡所用时间或程序运行到现在所经过的时间进程时间:一个进程所使用的CPU时间总量,适用于对程序、算法性能的检查或优化本文只关注真实时间的处理与转换一、Epoch无论地理位置如何,Linux系...

weixin_42377790的博客 932

python中时间处理

python中时间处理 文章目录python中时间处理一、简介二、time2.1 时间输出2.2 时间格式化输出2.3 其他形式转时间2.4 线程休眠三、datetime3.1 当前时间或指定时间3.2 时间字段输出3.3 字符串和时间互转3.4 时间修改四、calendar4.1 日历输出4.2 日历判断4.3 日历转换五、结尾 一、简介 这里介绍python3中时间的处理,常用的时间处理工具模...

panda-star的博客 1218

DateUtil(时间处理函数工具)

  时间处理函数工具:得到时间戳,周一,周末,时间更改,时间精确计算。。。。 Java代码   import java.text.ParseException;   import java.text.SimpleDateFormat;   import java.util.Calendar;   import java.util.Date;   im...

白强 1181

jdk8的时间处理

JDK 8 已经在 2014年 3月 18日正式可用 ,距离现在已经 5年多时间过去了。5年时间里很多企业也都换上了 JDK 8,明年 3月份 Jdk14 也要来了,那么 Jdk 8 的新特性你真的用起来了吗?我准备写一个 Jdk 8开始的新特性介绍以及使用的系列文章,后续 Jdk 也会继续更新,你如果需要的话不妨关注下博客或者公众号。 1. 时间处理类 Jdk8 带来了全新的时间处理工具类,...

hufi320的博客 259

moment时间处理

moment时间处理的使用: 1. 安装moment cnpm i moment --save 2. 引入moment import moment from 'moment' 3. 使用moment moment(时间戳).format('YYYY-MM-DD hh:mm:ss')

weixin_44943270的博客 2095

时间处理实用类

时间处理实用类 /***  File: DateUtil.java*  Copyright 2005 Founder.*  All right reserved.*  Date          Author     qiuren*  2010/12/24    ken        reCreated  **/package com.order.cc.tool.date;import java.text.SimpleDateFormat;import java.util.Calendar;import j

bishanqiuren的专栏 456
上一篇: [ZZ]MySQL 备份和恢复
下一篇: [ZZ] QPS、PV和需要部署机器数量计算公式
clide
博客等级 码龄20年 4粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值