utc时间转换

linux时间函数

允我心安 提交于 2020-02-21 14:26:21
我们在编程中可能会经常用到时间,比如取得系统的时间(获取系统的年、月、日、时、分、秒,星期等),或者是隔一段时间去做某事,那么我们就用到一些时间函数。 linux下存储时间常见的有两种存储方式,一个是从1970年到现在经过了多少秒,一个是用一个结构来分别存储年月日时分秒的。 time_t 这种类型就是用来存储从1970年到现在经过了多少秒,要想更精确一点,可以用结构struct timeval,它精确到微妙。 struct timeval { long tv_sec; /*秒*/ long tv_usec; /*微秒*/ }; 而直接存储年月日的是一个结构: struct tm { int tm_sec; /*秒,正常范围0-59, 但允许至61*/ int tm_min; /*分钟,0-59*/ int tm_hour; /*小时, 0-23*/ int tm_mday; /*日,即一个月中的第几天,1-31*/ int tm_mon; /*月, 从一月算起,0-11*/ int tm_year; /*年, 从1900至今已经多少年*/ int tm_wday; /*星期,一周中的第几天, 从星期日算起,0-6*/ int tm_yday; /*从今年1月1日到目前的天数,范围0-365*/ int tm_isdst; /*日光节约时间的旗标*/ }; 需要特别注意的是

MySQL NOW() 是否包含夏令时

限于喜欢 提交于 2020-01-29 16:45:35
文章目录 总结 实验过程 环境 NOW()会自动计算夏令时吗? 关于美国的夏令时 主机时区设置为Asia/Shanghai 结论 主机时区设置为America/Los_Angeles 结论 time_zone设置为时区名称 填充时区表 结论 遗留问题 参考文献 总结 MySQL的timezone值可以多种格式给出,都不区分大小写: 1 时区偏移量 ,表示从UTC开始的偏移量 [H]H:MM ,带有前缀 + 或 - ,例如, +[H]H:MM , -[H]H:MM 。当小时值小于10,可选择使用前导零;在这种情况下,MySQL在存储和检索时会预先设置前导零,将"-00:00"或"-0:00"转换为"+00:00"。时区偏移必须在"-12:59"到"13:00"的范围内。 NOW()不包含夏令时 时区名称 ,例如 'UTC' , 'Asia/Shanghai' , 'America/Los_Angeles' , 'Europe/Helsinki' , 'US/Eastern' , 'MET' 。当且仅当mysql已经创建并填充了数据库中的时区信息表时,才能使用时区名称 。 NOW()包含夏令时 SYSTEM ,指示服务器时区与主机系统时区相同。 取决于MySQL Server所在主机的时间 mysql> show variables like '%time_zone%'; +-----

恼人的时区问题

隐身守侯 提交于 2020-01-29 06:03:08
参考: http://www.99cankao.com/date/timezone.php 由于由于工作中经常要采集来自不同国家网站的数据,和来自不同时区的同事月会议,开发程序,所以经常在时区上转不过弯来,这里整理了一下,做个笔记,也希望对大家有所帮助。 时区的定义 1884年在华盛顿召开的国际经度会议(又称国际子午线会议)上,规定将全球划分为24个时区(东、西各12个时区)。 GMT 格林尼治平时(又称 格林尼治平均时间 或 格林尼治标准时间 ,旧译格林威治标准时间;英语:Greenwich Mean Time,GMT)是指位于英国伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线。 理论上来说,格林尼治标准时间的正午是指当太阳横穿格林尼治子午线时(也就是在格林尼治上空最高点时)的时间。由于地球在它的椭圆轨道里的运动速度不均匀, 这个时刻可能与实际的太阳时有误差,最大误差达16分钟 。 由于地球每天的自转是有些不规则的,而且正在缓慢减速,因此格林尼治时间已经不再被作为标准时间使用。现在的标准时间,是由原子钟报时的协调世界时(UTC)。 UTC 协调世界时,又称世界标准时间或世界协调时间,简称 UTC (从英文“Coordinated Universal Time”/法文“Temps Universel Coordonné”而来),是最主要的世界时间标准

SpringBoot时间戳与MySql数据库记录相差14小时排错

寵の児 提交于 2020-01-10 04:49:03
项目中遇到存储的时间戳与真实时间 相差14小时 的现象,以下为解决步骤. 问题 CREATE TABLE `incident` ( `id` int(11) NOT NULL AUTO_INCREMENT, `created_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `recovery_time` timestamp NULL DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4; 以上为数据库建表语句,其中 created_time 是插入记录时自动设置, recovery_time 需要手动进行设置. 测试时发现, created_time 为正确的北京时间,然而 recovery_time 则与设置时间相差14小时. 尝试措施 jvm时区设置 //设置jvm默认时间 System.setProperty("user.timezone", "UTC"); 数据库时区查询 查看数据库时区设置: show variables like '%time_zone%'; --- 查询结果如下所示: --- system_time_zone: CST --- time_zone:SYSTEM 查询 CST

SpringBoot时间戳与MySql数据库记录相差14小时

痞子三分冷 提交于 2019-12-18 11:19:41
SpringBoot时间戳与MySql数据库记录相差14小时 项目中遇到存储的时间戳与真实时间相差14小时的现象,以下为解决步骤. 问题 CREATE TABLE incident ( id int(11) NOT NULL AUTO_INCREMENT, created_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, recovery_time timestamp NULL DEFAULT NULL, PRIMARY KEY ( id ) ) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8mb4; 以上为数据库建表语句,其中created_time是插入记录时自动设置,recovery_time需要手动进行设置. 测试时发现,created_time为正确的北京时间,然而recovery_time则与设置时间相差14小时. 尝试措施 jvm时区设置 //设置jvm默认时间 System.setProperty(“user.timezone”, “UTC”); 数据库时区查询 查看数据库时区设置: show variables like ‘%time_zone%’; — 查询结果如下所示: — system_time_zone: CST — time_zone:SYSTEM

时间转换

泄露秘密 提交于 2019-12-03 13:25:27
1 #include<stdio.h> 2 3 int main(void) 4 { 5 int bjt; 6 7 scanf_s("%d", &bjt); 8 9 int bjt_hour = bjt / 100; 10 int bjt_minute = bjt % 100; 11 12 int utc_hour = bjt_hour - 8; 13 if (utc_hour < 0) 14 { 15 utc_hour = utc_hour + 24; 16 } 17 18 if (utc_hour > 0) 19 { 20 printf("%d%02d", utc_hour, bjt_minute); 21 } 22 else 23 { 24 printf("%d", bjt_minute); 25 } 26 27 return 0; 28 } 来源: https://www.cnblogs.com/2018jason/p/11796857.html

AX中日期的常用方法

半腔热情 提交于 2019-12-02 21:39:41
1. 对于Date类型的方法,通常ax系统有一个对应帮助类DateTimeUtil Class,该类中有需许多系统自定义的方法,常见的如下: DateTimeUtil::getUserPreferredTimeZone()    用户设置的时区参数 DateTimeUtil::newDateTime(date1,time1)      从这个Date和TimeofDay类型构建一个UTC日期时间类 型 DateTimeUtil::utcNow()              得到当前UTC日期时间 today()                     得到当前系统的日期 TimeNow()                    得到当前系统的时间,返回的是Secords DateTimeUtil:date(UTC utc)            获取date DateTimeUtil:time(UTC utc)            获取时间 DateTimeUtil::applyTimeZoneOffset()        对一个UTC类型的字段进行时区转换 2.由于本地显示的时间与我们系统时间存储在数据库时,会有一个时差区别(8个小时),故界面显示的时间和系统数据库里的时间进行比较时需要去掉时差然后进行比较。这是因为窗口的UTC时间比我们插入的时间晚了8个小时