iso8601与时间戳之间的转换

ISO8601是国际标准化组织的日期和时间的表示方法,常见如下

日期2019-09-11

UTC日期与时间2019-09-11T01:54:23+00:00

2019-09-11T01:54:23Z

20190911T015423Z

周数2019-W37

日期与周数2019-W37-3

无年份标示之日期--09-11[1]

当年度累积日数2019-254

其中日期与时间合并表达时,需要在时间前加T。

如果时间在零时区,并恰好与协调世界时相同,那么在时间最后加一个大写字母Z。Z是相对协调世界时时间0偏移的代号。

UTC协调世界时是最主要的世界时间标准

影响时间转换的环境变量TZ

时间函数除了gmttime、asctime不受环境变量TZ的影响外,大部分函数都受到环境变量TZ的影响,这几个函数是:localtime、mktime、ctime和strftime。如果定义了TZ,则这些函数将使用其值以代替系统默认时区。

API

ISO8601 to timestamp

char *strptime(const char *s, const char *format, struct tm *tm)将时间格式字符串S按指定格式foramt解析成tm;再用time_t mktime(struct tm *tm)函数将tm生成时间戳。

static time_t _iso8601_to_timestamp(const char *str)

{

struct tm ttime = {0};

if (!str) {

return 0;

}

strptime(str, "%Y-%m-%dT%H:%M:%SZ", &ttime);

return mktime(&ttime);

}

或者获取当前时间戳

time_t now;

time(&now);

printf("now:%ld",now);

timestamp to STRING

和时间操作相关的关键数据结构是struc tm,其定义如下:

struct tm {

int tm_sec; /* Seconds (0-60) */

int tm_min; /* Minutes (0-59) */

int tm_hour; /* Hours (0-23) */

int tm_mday; /* Day of the month (1-31) */

int tm_mon; /* Month (0-11) */

int tm_year; /* Year - 1900 */

int tm_wday; /* Day of the week (0-6, Sunday = 0) */

int tm_yday; /* Day in the year (0-365, 1 Jan = 0) */

int tm_isdst; /* Daylight saving time */

};

在将时间戳表示成指定格式前,我们需要将时间戳转换成tm数据结构。

struct tm *gmtime(const time_t *timep)

struct tm *localtime(const time_t *timep)

gtime转换后的tm是基于时区0的,而localtime转换后的是基于当地时区

利用接口 size_t strftime(char *s, size_t max, const char *format,const struct tm *tm) 来定制我们的时间格式

time_t t;

time(&t);

struct tm *tmp_time = localtime(&t);

char s[100];

strftime(s, sizeof(s), "%04Y%02m%02d %H:%M:%S", tmp_time);

printf("%d: %sn", (int)t, s);

Ref

python 时间戳转iso 8601_iso8601时间格式以及转换相关推荐

  1. python 时间戳转iso 8601_ISO8601时间字符串到时间戳处理

    作者:matrix 被围观: 5,157 次 发布时间:2019-06-21 无评论 »

  2. python 时间戳转iso 8601_Python中的ISO时间(ISO 8601)

    回答(11) 2 years ago ISO 8601本地: import datetime datetime.datetime.now().isoformat() UTC至ISO 8601: imp ...

  3. python 时间戳转iso 8601_关于datetime:Python中的ISO时间(ISO 8601)

    我有一个文件. 在Python中,我想花费它的创建时间,并将其转换为ISO时间(ISO 8601)字符串,同时保留它在东部时区(ET)中创建的事实. 如何获取文件的ctime并将其转换为指示东部时区的 ...

  4. python中时间格式的转换(time模块)

    1.Unix时间戳 Unix时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数.例如:xxxxxxxx.xxxxx,单位 ...

  5. python 读取excel文件 效率 时间 格式_python读取Excel文件中的时间数据

    在使用python读取Excel文件中的时间格式,碰到的时间格式转换问题: 读取这样的表格: 输出这样的数据结果: 然而这样的结果却不是我们想要的,我们需要的是这样的结果: 1.安装python官方库 ...

  6. ISO 8601时间格式时间创建

    格式一:ISO 8601时间格式时间创建 private static String getNowTime(){//时间格式DateFormat df = new SimpleDateFormat(& ...

  7. Java ISO 8601时间格式转换

    String pattern = "YYYY-MM-dd'T'HH:mm:ss.SSSZZ"; String timeStr=DateFormatUtils.format(new ...

  8. vue中通过monment.js插件来将时间戳转换为常用的时间格式

    vue中通过monment.js插件来将时间戳转换为常用的时间格式 在项目中很多时候需要展示时间信息,我们一般都是用时间戳来传输时间信息,但是我们在页面展示的话是我们想要的常见格式,比如:2021-4 ...

  9. js时间戳转指定的时间格式

      时间戳转指定的时间格式,时间格式可以自己随意定义.   以前写的时候,看了好几个时间格式的函数,后来慢慢处理优化搞出来的,自己也是一直都在用的方法 /** * @description 时间戳转化 ...

最新文章

  1. git push VS git fetch
  2. IOS SEL (@selector) 原理及使用总结(一)
  3. BZOJ 3489: A simple rmq problem(K-D Tree)
  4. mysql触发器区分新增 修改_MySQL触发器 , 判断更新操作前后数据是否改变
  5. 《图解CSS3:核心技术与案例实战》
  6. 高度固定 宽度裁剪_高领落肩连衣裙的制版裁剪教程才智服装
  7. 测试环境redis维护内存不足问题
  8. Linux网络子系统中收包软中断
  9. jenkins忘记密码和常用插件的下载
  10. 航空运输行业:优质民营航司的黄金期才刚刚开始-20210106.PDF
  11. 电大有计算机教程吗,中央电大 计算机平面设计(上)
  12. SHFileOperation的用法
  13. android自定义view混淆,Android混淆详解
  14. iphone快捷指令蚂蚁森林能量_iPhone“快捷指令”怎么玩?玩法太多,别让这个功能吃灰...
  15. 一位大牛对于写技术博客的一些建议
  16. java 线程的插队运行_java笔记--线程的插队行为
  17. 推荐画UML图以及流程图的在线网站Site
  18. AV1视频编码标准资源汇总
  19. linux系统配置sftp服务器,linux配置sftp服务器配置
  20. 一 ROS基础教程

热门文章

  1. 计算机无法访问iTunes,iTunes无法连接到计算机上的iTunes Store,并且发生未知错误。解决方法...
  2. html绘制电流曲线,circuitFX v1.60 AE脚本快速制作高科技电流电路板线路图形动画...
  3. 对“三网”——电信网、有限电视网、计算机网的比较
  4. 电子税务局网上申报系统弹出Acrobat错误的解决方法
  5. 怎么在WEB页面上读取身份证信息
  6. B站发布首个8K视频,CCTV-8K频道即将开播,一大堆8K利好消息正在到来,8K赛道要开启加速度了吗?
  7. 在没有Google的情况下使用Android :(一种)指南
  8. 浅析.tbd与.dylib
  9. 55道 MySQL面试题及答案
  10. 《机器学习》及实战四、贝叶斯理论及实战