如何将numpy.datetime64对象转换为datetime.datetime(或Timestamp)?
在以下代码中,我创建了datetime,timestamp和datetime64对象.
import datetime
import numpy as np
import pandas as pd
dt = datetime.datetime(2012, 5, 1)
# A strange way to extract a Timestamp object, there's surely a better way?
ts = pd.DatetimeIndex([dt])[0]
dt64 = np.datetime64(dt)
In [7]: dt
Out[7]: datetime.datetime(2012, 5, 1, 0, 0)
In [8]: ts
Out[8]: <Timestamp: 2012-05-01 00:00:00>
In [9]: dt64
Out[9]: numpy.datetime64('2012-05-01T01:00:00.000000+0100')
Run Code Online (Sandbox Code Playgroud)
注意:从时间戳中获取日期时间很容易:
In [10]: ts.to_datetime()
Out[10]: datetime.datetime(2012, 5, 1, 0, 0)
Run Code Online (Sandbox Code Playgroud)
但是我们如何从()中提取datetime或者?Timestampnumpy.datetime64dt64 …
我们有一台在GMT时间运行的服务器.我需要编写一个Python脚本来确定它是否是加利福尼亚州洛杉矶的当前(在这第二个)夏令时(DST).我怎么能做到这一点?我看了一下pytz和时间,但我无法弄明白.我意识到我可以创建一些逻辑,例如比较LA中的当前时间和GMT时间,但如果我可以使用标准库,那将会更加清晰.
谢谢
编辑:这是我设置时区的一些示例代码:
from pytz import timezone
import pytz
from datetime import datetime, timedelta
tz = timezone('America/Los_Angeles')
// Instantiate a datetime object using tz?
Run Code Online (Sandbox Code Playgroud)
编辑:这是一段可行的代码片段.它不优雅,这就是为什么我要问是否有一个图书馆或为此而制作的东西.也许像is_dst()函数.
utc = timezone("UTC")
now = utc.localize(datetime.utcnow())
los_angeles_tz = timezone('America/Los_Angeles')
los_angeles_time = now.astimezone(los_angeles_tz)
delta = los_angeles_time.utcoffset()
dstDelta = timedelta(hours=-8)
is_dst = (delta == dstDelta)
Run Code Online (Sandbox Code Playgroud) 我想在Python中推断日期是否是一年中由于DST(夏令时)而改变小时的实际日期。
使用该库,pytz您可以本地化日期时间,并且正确完成实际的 DST 更改。dst()此外,库的方法datetime允许您推断实际日期是夏季还是冬季(示例)。但是,我想推断 DST 更改的实际日期。
具体来说,我需要一个函数(例如is_dst_change(date, timezone)),它接收日期并仅在一年中确实有小时变化的那些日子返回 True 。例如:
import pytz
import datetime
def is_dst_change(day, timezone):
# Localize
loc_day = pytz.timezone(timezone).localize(day)
# Pseudocode: Infer if a date is the actual day in which the dst hour change is made
if loc_day is dst_change_day:
return True
else:
return False
# In the timezone 'Europe/Madrid', the days in which the DST change is made in 2021 are 28/03/2021 and 31/10/2021
is_dst_change(day=datetime.datetime(year=2021, …Run Code Online (Sandbox Code Playgroud) 我有一个带有TimeStamps列的数据框.我想将其转换为本地时间的字符串,即夏令时.
所以我想TS转换低于[0]以"手绘POP练习03:55:05".熊猫似乎意识到DST,但只有当你在系列上调用.values时才会这样.
谢谢
(Pdb) ts = df['TimeStamps']
(Pdb) ts
0 2015-03-30 02:55:05.993000
1 2015-03-30 03:10:20.937000
2 2015-03-30 10:09:19.947000
Name: TimeStamps, dtype: datetime64[ns]
(Pdb) ts[0]
Timestamp('2015-03-30 02:55:05.993000')
(Pdb) ts.values
array(['2015-03-30T03:55:05.993000000+0100',
'2015-03-30T04:10:20.937000000+0100',
'2015-03-30T11:09:19.947000000+0100'], dtype='datetime64[ns]')
Run Code Online (Sandbox Code Playgroud)