相关疑难解决方法(0)

python - 日期时间与时区到纪元

在下面的代码中,我正在计算现在的纪元和当天纪元的开始.

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.

我究竟做错了什么 ?或者这可以用不同的方式完成吗?

谢谢!

python timezone datetime epoch

8
推荐指数
2
解决办法
2万
查看次数

如何将python timestamp string转换为epoch?

我有以下字符串:

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 timestamp epoch

8
推荐指数
4
解决办法
3万
查看次数

python datetime以毫秒精度浮动

什么是在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)

python datetime python-2.7

7
推荐指数
2
解决办法
4万
查看次数

在执行查询之前,在SQLAlchemy模型中将datetime转换为unix时间戳?

我使用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)

python sqlalchemy

6
推荐指数
1
解决办法
4993
查看次数

如何在转换为Unix时指定时区(UTC)?(蟒蛇)

我有一个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小时

有什么建议?

谢谢!

python datetime iso8601 unix-timestamp

5
推荐指数
1
解决办法
8542
查看次数

在python中指定日期时间所在的时区

我有一个从数据库中获取的日期时间,这个日期时间是一个 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 时间戳

python timezone datetime

5
推荐指数
1
解决办法
9942
查看次数

将字符串日期转换为不与Cython和POSIX C库一起使用的纪元时间

我有一个非常大的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)

python date epoch cython pandas

5
推荐指数
1
解决办法
681
查看次数

python中的time.mktime时区是免费的吗?

我试图理解纪元的本质及其行为。下面我尝试使用 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 time timezone datetime epoch

5
推荐指数
1
解决办法
1万
查看次数

将日期转换为数字python

可能重复:
从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 matlab datetime

4
推荐指数
1
解决办法
2万
查看次数

将Python日期转换为Unix时间戳

我想将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

unix datetime python-2.7

4
推荐指数
2
解决办法
2万
查看次数