在下面的代码中,我正在计算现在的纪元和当天纪元的开始.
import time
import pytz
from datetime import datetime
tz1 = pytz.timezone('CST6CDT')
utc = pytz.timezone('UTC')
now = pytz.UTC.localize(datetime.utcnow())
now_tz = now.astimezone(tz1)
print now_tz
print now_tz.strftime('%s')
begin_day = now_tz.replace(hour=0, minute=0, second=0)
print begin_day
print begin_day.strftime('%s')
Run Code Online (Sandbox Code Playgroud)
打印声明:
2012-08-28 13:52:21.595718-05:00
1346187141
2012-08-28 00:00:00.595718-05:00
1346137200
Run Code Online (Sandbox Code Playgroud)
使用CDT时区将时期转换为时间戳:1346187141 - 2012年8月28日15:52:21,1346137200 - 2012年8月28日02:00:00
我希望第二个时代开始,但现在是凌晨2点.在转换为纪元时,它看起来仍然使用本地时区PST.
我究竟做错了什么 ?或者这可以用不同的方式完成吗?
谢谢!
我有以下字符串:
mytime = "2009-03-08T00:27:31.807Z"
Run Code Online (Sandbox Code Playgroud)
如何在python中将其转换为epoch?
我试过了:
import time
p = '%Y-%m-%dT%H:%M:%S'
int(time.mktime(time.strptime(s, p)))
Run Code Online (Sandbox Code Playgroud)
但它不适用于31.807Z.
什么是在python中以毫秒精度在float中存储日期和时间信息的优雅方法?编辑:我正在使用python 2.7
我一起攻击了以下内容:
DT = datetime.datetime(2016,01,30,15,16,19,234000) #trailing zeros are required
DN = (DT - datetime.datetime(2000,1,1)).total_seconds()
print repr(DN)
Run Code Online (Sandbox Code Playgroud)
输出:
507482179.234
Run Code Online (Sandbox Code Playgroud)
然后恢复到日期时间:
DT2 = datetime.datetime(2000,1,1) + datetime.timedelta(0, DN)
print DT2
Run Code Online (Sandbox Code Playgroud)
输出:
2016-01-30 15:16:19.234000
Run Code Online (Sandbox Code Playgroud)
但我真的在寻找一些更优雅,更健壮的东西.
在matlab中我会使用datenum和datetime函数:
DN = datenum(datetime(2016,01,30,15,16,19.234))
Run Code Online (Sandbox Code Playgroud)
并回复:
DT = datetime(DN,'ConvertFrom','datenum')
Run Code Online (Sandbox Code Playgroud) 我使用SQLAlchemy来处理使用奇怪时间戳格式的远程数据库 - 它将时间戳存储为自纪元以来的双精度毫秒.我想使用python datetime对象,所以我在我的模型中编写了getter/setter方法,遵循以下要点:
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import synonym
from sqlalchemy.dialects.mysql import DOUBLE
import datetime
Base = declarative_base()
class Table(Base):
__tablename__ = "table"
id = Column(Integer, primary_key=True)
_timestamp = Column("timestamp", DOUBLE(asdecimal=False))
@property
def timestamp(self):
return datetime.datetime.utcfromtimestamp(float(self._timestamp)/1000.)
@timestamp.setter
def timestamp(self, dt):
self._timestamp = float(dt.strftime("%s"))*1000.
timestamp = synonym('_timestamp', descriptor=timestamp)
Run Code Online (Sandbox Code Playgroud)
这非常适合在表中插入新行并使用表中的对象:
>>> table = session.query(Table).first()
<Table id=1>
>>> table.timestamp
datetime.datetime(2016, 6, 27, 16, 9, 3, 320000)
>>> table._timestamp
1467043743320.0
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试在过滤器表达式中使用datetime时,它会崩溃:
>>> july = datetime.datetime(2016, 7, 1)
>>> old …Run Code Online (Sandbox Code Playgroud) 我有一个IS8601格式的utc时间戳,我试图将其转换为unix时间.这是我的控制台会话:
In [9]: mydate
Out[9]: '2009-07-17T01:21:00.000Z'
In [10]: parseddate = iso8601.parse_date(mydate)
In [14]: ti = time.mktime(parseddate.timetuple())
In [25]: datetime.datetime.utcfromtimestamp(ti)
Out[25]: datetime.datetime(2009, 7, 17, 7, 21)
In [26]: datetime.datetime.fromtimestamp(ti)
Out[26]: datetime.datetime(2009, 7, 17, 2, 21)
In [27]: ti
Out[27]: 1247815260.0
In [28]: parseddate
Out[28]: datetime.datetime(2009, 7, 17, 1, 21, tzinfo=<iso8601.iso8601.Utc object at 0x01D74C70>)
Run Code Online (Sandbox Code Playgroud)
如你所见,我无法回到正确的时间.如果我使用fromtimestamp(),则小时为1,如果我使用utcfromtimestamp(),则提前6小时
有什么建议?
谢谢!
我有一个从数据库中获取的日期时间,这个日期时间是一个 UTC 日期时间。但是当我从数据库中提取它时,它不知道时区。我需要做的是将此日期时间转换为另一个函数的“纪元秒数”时间。问题在于,系统的时间在 PST 中,由于特定原因我无法更改它。
所以,我想要做的是,获取我从数据库中获得的这个日期时间,并告诉 python 这个日期时间是一个 UTC 日期时间。我所做的每一种方式都会导致它因时区转换而失去时间或获得时间。同样,不是试图转换时间,只是试图指定它是 UTC。
如果有人可以帮助解决这个问题,那就太好了。
谢谢!
例子
假设 database_function() 返回的日期时间数据类型为 '2013-06-01 01:06:18'
datetime = database_function()
epoch = datetime.strftime('%s')
pytz.utc.localize(database_function()).datetime.strftime('%s')
datetime.replace(tzinfo=pytz.utc).datetime.strftime('%s')
Run Code Online (Sandbox Code Playgroud)
这两个都返回 1370077578 的纪元时间戳但是,它应该返回每个http://www.epochconverter.com/的时间戳 1370048778请 记住,这个时间戳是一个 UTC 时间戳
我有一个非常大的pandas数据帧,我想创建一个列,其中包含自ISO-8601格式日期字符串的纪元以来的秒数.
我最初使用标准的Python库,但结果很慢.我曾尝试使用POSIX的C库函数来代替这个strptime和mktime直接,但一直没能得到的时间转换正确的答案.
这是代码(在IPython窗口中运行)
%load_ext cythonmagic
%%cython
from posix.types cimport time_t
cimport numpy as np
import numpy as np
import time
cdef extern from "sys/time.h" nogil:
struct tm:
int tm_sec
int tm_min
int tm_hour
int tm_mday
int tm_mon
int tm_year
int tm_wday
int tm_yday
int tm_isdst
time_t mktime(tm *timeptr)
char *strptime(const char *s, const char *format, tm *tm)
cdef to_epoch_c(const char *date_text):
cdef tm time_val
strptime(date_text, "%Y-%m-%d", &time_val)
return <unsigned int>mktime(&time_val)
cdef to_epoch_py(const char *date_text):
return np.uint32(time.mktime(time.strptime(date_text, …Run Code Online (Sandbox Code Playgroud) 我试图理解纪元的本质及其行为。下面我尝试使用 2 个不同时区特定日期时间和 1 个天真的日期时间来执行相同的日期
import time
import pytz
from datetime import datetime, timedelta
pst = pytz.timezone('America/Los_Angeles')
t = datetime(year=2015, month=2, day=2)
t = pst.localize(t)
time.mktime(t.timetuple())
# outputs 1422864000.0
utc = pytz.utc
k = datetime(year=2015, month=2, day=2)
k = utc.localize(k)
time.mktime(k.timetuple())
# outputs 1422864000.0
o = datetime(year=2015, month=2, day=2)
time.mktime(o.timetuple())
# outputs 1422864000.0
Run Code Online (Sandbox Code Playgroud)
它们都具有相同的纪元,但这令人惊讶,因为太平洋标准时间 (PST) 中的相同日期应相对于 UTC (UTC) 偏移 7 小时。有人可以解释一下吗?
谢谢
可能重复:
从python中获取浮点数的日期时间,反之亦然
和许多人一样,我从切换Matlab到Python. Matlab将每个日期表示为数字.(Integers从那以后几天00-00-0000,分数是当天的时间).我认为python除了不同的开始日期之外,它也是一样的0-0-0001
我一直在玩datetime,但似乎无法远离datetime物体timedeltas.我确信这很简单,但我如何处理普通的旧数字(浮点数)?
或许作为一点背景:
我带来一个日期和时间戳,并将它们连接起来以制作一个时间值:
from datetime import datetime
date_object1 = datetime.strptime(date[1][0] + ' ' + date[1][1], '%Y-%m-%d %H:%M:%S')
date_object2 = datetime.strptime(date[2][0] + ' ' + date[2][1], '%Y-%m-%d %H:%M:%S')
Run Code Online (Sandbox Code Playgroud) 我想将Python date对象转换为Unix时间戳.
我已经添加了一个time对象,所以它将是午夜的特定日期,但我不知道如何从那里继续.
d = date(2014, 10, 27)
t = time(0, 0, 0)
dt = datetime.combine(d, t)
#How to convert this to Unix timestamp?
Run Code Online (Sandbox Code Playgroud)
我使用的是Python 2.7