UTC/GMT、unix时间和时区,以及在pandas中的转换

       首先明确几个概念,UTC/GMT、unix时间和时区。UTC/GMT表示世界协调时,是格林尼治的时间,格林尼治是一个经过本初子午线的地方;unix时间一般单位是秒,表示从UTC的1970-1-1的0点开始到某个时点所经过的秒数;由于地球自转,不同地区的时间表示是不一样的,人们把地球划分为24个时区,格林尼治就在0时区的中位线上,北京便比格林尼治提早8个时区。可知,UTC/GMT是一个地方的时间,用来统一协调全世界的时间,因为不同地区的时间不一样,当我们跟别人说一个时间的时候,严格来说,如果不指明地区,那就是没有意义的,所以为了统一这种说法,我们可以直接跟别人说UTC时间是多少,别人就有概念了;unix是一个不会随时区发生改变的值,其是以UTC时间1970-1-1的0点开始的经过的秒数,意义很明确。

       在python中,我们可以通过time模块的time()方法,对得到的数值取整,便可以获得当前的unix时间,也可以在pandas中对Timestamp对象调取value属性,但是这里的value属性是以纳秒为单位的,所以还需要除以1e9得到unix时间。在time模块中,不仅可以通过time()方法获取unix时间,也可以通过localtime(unix)方法把unix时间转换为struct_time对象。

       下面主要针对pandas中的转换。在pandas中,可以通过to_datetime()方法把unix时间转为Timestamp对象,to_datetime()是一个强大的方法,其还可以指定origin参数,以及传入参数的单位,进行灵活的转换,origin参数默认为UTC时间1970-1-1的0点0分0秒,如果赋值utc参数为True,则转换后的时间戳便是有时区意识的,对应的时区为utc时区,不然就是一个naive的时间错对象,也就是没有时区的对象,默认为False。

       对于时间戳对象或者DatetimeIndex对象,可以直接用tz_convert()方法进行时区的转换,当然这个对象必须不能是naive的,即其已经是有时区意识的对象,才能进行时区的转换,而对象naive的对象,可以通过tz_localize()方法,指定时区转成有时区意识的对象。一般的pandas中,如果没有设定参数,则默认生成naive的对象。具体可见如下代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值