时间戳timestamp

百科:
时间戳是指格林威治时间1970年01月01日00时00分00秒起至当下的总秒数。通俗的讲, 时间戳是一份能够表示一份数据在一个特定时间点已经存在的完整的可验证的数据。 它的提出主要是为用户提供一份电子证据, 以证明用户的某些数据的产生时间。

时间戳

Unix 时间戳是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。

北京时间

夏令时

1986年至1991年,中华人民共和国在全国范围实行了六年夏令时,每年从4月中旬的第一个星期日2时整(北京时间)到9月中旬第一个星期日的凌晨2时整(北京夏令时)。除1986年因是实行夏令时的第一年,从5月4日开始到9月14日结束外,其它年份均按规定的时段施行。夏令时实施期间,将时间向后调快一小时。1992年4月5日后不再实行。

JDK 不同版本的夏令时问题

夏令时的起止,是政令对日历描述的人为干预。每年均可能发生变化,JDK 如何感知这个规律并在系统上加以体现的?穷举所有变化,并配置在 JDK 中。详见:Timezone Data Versions in the JRE Software

不同版本下 Asia/Shanghai 时区夏令时起始时间不同,早期维护者认为中国标准时间的夏令时切换发生在0时,而后来又经证明发生在2时,新版本 JDK 及时修正了这个问题。

获取当前时间戳

Swift
NSDate().timeIntervalSince1970

Copy

Go
import (
  "time"
)
int64(time.Now().Unix())
Java
// pure java
System.currentTimeMillis() / 1000
// joda java
DateTime.now().getMillis() / 1000
JavaScript
Math.round(new Date() / 1000)
Objective-C
[[NSDate date] timeIntervalSince1970]
MySQL
SELECT unix_timestamp(now())
SQLite
SELECT strftime('%s', 'now')
Erlang
calendar:datetime_to_gregorian_seconds(calendar:universal_time())-719528*24*3600.
PHP
<?php
// pure php
time();
<?php
// carbon php
use Carbon\Carbon;
Carbon::now()->timestamp;
Python
import time
time.time()
import arrow
arrow.utcnow().timestamp
Ruby
Time.now.to_i
Shell
date +%s
Groovy
(new Date().time / 1000).longValue()
Lua
os.time()
.NET/C#
(DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000
Dart
(new DateTime.now().millisecondsSinceEpoch / 1000).truncate()

不同位数时间戳用pandas转换

10位,是秒:

比如 1571647885 是1970-01-01以来的秒数

from pandas.api.types import is_numeric_dtype
...
if is_numeric_dtype(result_df[column_name]):
    result_df[column_name] = pd.to_datetime(result_df[column_name], unit='s').dt.strftime('%Y-%m-%d %H:%M:%S')

13位,是毫秒:

if is_numeric_dtype(result_df[column_name]):
    result_df[column_name] = pd.to_datetime(result_df[column_name], unit='ms').dt.strftime('%Y-%m-%d %H:%M:%S')

16位,是微秒:

if is_numeric_dtype(result_df[column_name]):
    result_df[column_name] = pd.to_datetime(result_df[column_name]/1000, unit='ms').dt.strftime('%Y-%m-%d %H:%M:%S')

这样转换出来是UTC-0时区的时间。如果想要strftime转换出来的是东八区本地时间,需要strftime之前转换一次时区。

result_df[column_name] = pd.to_datetime(result_df[column_name], unit='s').dt.tz_localize('UTC').dt.tz_convert('Asia/Shanghai')
result_df[column_name] = result_df[column_name].dt.strftime('%Y-%m-%d %H:%M:%S')
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值