系统时区为东八区
Python时间戳的起点为1970-01-01 08:00:00
代码验证
import datetime
print(datetime.datetime.fromtimestamp(0))
-
打印结果
- 1970-01-01 08:00:00
from time import strftime, localtime
print(strftime('%Y-%m-%d %H:%M:%S', localtime(0)))
-
打印结果
- 1970-01-01 08:00:00
时区
from datetime import datetime, timezone, timedelta
t = datetime(year=1970, month=1, day=1, hour=0, minute=0, second=0, microsecond=0,
tzinfo=timezone(timedelta(hours=0)))
print(t)
print(t.timestamp())
t = datetime(year=1970, month=1, day=1, hour=8, minute=0, second=0, microsecond=0,
tzinfo=timezone(timedelta(hours=8)))
print(t)
print(t.timestamp())
打印结果
1970-01-01 00:00:00+00:00
0.0
1970-01-01 08:00:00+08:00
0.0
相关应用
Python时间和毫秒互转
from datetime import datetime
def now() -> datetime:
return datetime.now()
def str2datetime(s, fmt='%Y-%m-%d %H:%M:%S') -> datetime:
return datetime.strptime(s, fmt)
def datetime2str(d, fmt='%Y-%m-%d %H:%M:%S') -> str:
return d.strftime(fmt)
def datetime2second(d: datetime) -> float:
return d.timestamp()
def datetime2millisecond(d: datetime) -> int:
return int(d.timestamp() * 1000)
def second2datetime(f: float) -> datetime:
return datetime.fromtimestamp(f)
def millisecond2datetime(ms: int) -> datetime:
return second2datetime(ms / 1000)
t = datetime.now()
print(t)
sec = datetime2second(t)
print(sec)
t = second2datetime(sec)
print(t)
Oracle时间和毫秒互转
日期 -> 毫秒
SELECT
TO_NUMBER(
TO_DATE('2020-5-15 23:0:0','YYYY-MM-DD HH24:MI:SS')-TO_DATE('1970-01-01 8:0:0','YYYY-MM-DD HH24:MI:SS')
)*24*60*60*1000
FROM dual;
毫秒 -> 日期
SELECT
TO_CHAR(
1589554800000/(1000*60*60*24)+TO_DATE('1970-01-01 08:00:00','YYYY-MM-DD HH:MI:SS'),'YYYY-MM-DD HH24:MI:SS'
)FROM dual;