标签: python-datetime

python比较不同时区的日期时间

我正在实现预定发布对象的功能.用户选择发布时间,我创建了一个每分钟运行的cron任务,并检查是否是发布的时间.

用户来自不同的时区.

所以我需要比较两个日期时间:

>>user_chosen_time
datetime.datetime(2012, 12, 4, 14, 0, tzinfo=tzinfo(120))
>>curdate=datetime.datetime.now()
datetime.datetime(2012, 12, 4, 18, 4, 20, 17340)
>>user_chosen_time==curdate
*** TypeError: can't compare offset-naive and offset-aware datetimes
Run Code Online (Sandbox Code Playgroud)

抱歉相当愚蠢的问题,但我需要讨论这个问题.谢谢

python python-2.7 python-datetime

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

SqlAlchemy按时差过滤

我是SQLAlchemy的新手(但不是那么新).我正在使用0.9.3版本的项目.我想对SQLite数据库进行查询,过滤结果以获取那些没有时间戳的对象,或者自上次更新后超过24小时(在同一列上).

问题是,我没有确切知道如何实现时间过滤部分,我做了一个IPython Notebook会话,所以人们可以看看尝试寻找我的问题的答案有多长:

在[1]中:

from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Unicode, DateTime, Integer, create_engine
from sqlalchemy.orm import sessionmaker, relationship, backref
from datetime import datetime

engine = create_engine('sqlite:///:memory:')
Base = declarative_base()
Session = sessionmaker(bind=engine)
session = Session()
Run Code Online (Sandbox Code Playgroud)

在[2]中:

class Product(Base):
    __tablename__ = "product"

    id = Column(Integer, primary_key=True)
    name = Column(Unicode(140), unique=True, nullable=False)
    department = Column(Unicode(20))
    added = Column(DateTime, default=datetime.now)
    last_time_parsed = Column(DateTime)

    def repr(self):
        return "<Product(name=%s, department=%s, added=%s, last_time_parsed=%s)>" % (
                            self.name, self.department, self.added, self.last_time_parsed)
Run Code Online (Sandbox Code Playgroud)

在[3]中:

# create the …
Run Code Online (Sandbox Code Playgroud)

python time orm sqlalchemy python-datetime

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

datetime.fromtimestamp vs datetime.utcfromtimestamp,哪一个更安全?

我正在从传感器收集一些数据,我从中获取时间戳,如下所示:

   "time": {
            "seconds": 40, 
            "year": 115, 
            "month": 5, 
            "hours": 7, 
            "time": 1434549820776, 
            "date": 17, 
            "minutes": 3, 
            "day": 3, 
            "timezoneOffset": 420
        },
Run Code Online (Sandbox Code Playgroud)

我有一个python脚本来处理来自传感器的数据(传入的数据是json格式),我取值time并转换成可读的时间格式.

我用过datetime.fromtimestamp(1434549820776/1000).strftime('%Y-%m-%d %H:%M:%S'),然后回来了'2015-06-17 15:03:40'

当作为datetime.utcfromtimestamp(1434549820776/1000).strftime('%Y-%m-%d %H:%M:%S') 退换:'2015-06-17 14:03:40'

你可以有一个小时的差异,所以我的问题是哪一个更好用?

python python-datetime

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

在python中添加年份

如果我想在我的程序中添加100年,为什么它显示错误的日期?

import datetime
stringDate= "January 10, 1920"
dateObject= datetime.datetime.strptime(stringDate, "%B %d, %Y")
endDate= dateObject+datetime.timedelta(days=100*365)
print dateObject.date()
print endDate.date()
Run Code Online (Sandbox Code Playgroud)

python datetime python-3.x python-datetime

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

Python选择当年的随机日期

在Python中,您可以选择一年中的随机日期.例如,如果年份是2010年,则返回日期可能是2010年6月15日

python python-datetime

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

使用 timedelta.round() 函数

我已经看到许多关于如何定义自己的函数的问题,这些函数执行与此类似的操作,但我不知道如何使用 timedelta 的内置函数。有没有人有使用 timedelta.round() 的例子?我有想要舍入到最近的全天的 timedelta 对象。

https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Timedelta.round.html上的文档是:

时间增量.round

将 Timedelta 舍入到指定的分辨率

参数:

freq : 表示舍入分辨率的频率字符串

返回:四舍五入到给定分辨率的新 Timedelta freq

如果频率无法转换,则引发:ValueError

python datetime timedelta python-datetime

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

带有冒号的时区偏移的日期时间 strptime 问题

目前,我们正在开发一个应用程序,该应用程序尝试使用 2.db.transport.rest API 计算从 a 到 b 的路线的旅行时间。

不幸的是,我们正在从该 API 接收带有时区偏移量的时间戳,例如+01:00. 我们需要的是一个没有:, 所以的时区偏移量+0100

以下示例在 Linux 上使用 Python 3.6.7 给出错误:

from datetime import datetime
datetimestring = "2019-01-19T15:13:00.000+01:00"
datetime.strptime(datetimestring, '%Y-%m-%dT%H:%M:%S.%f%z')
Run Code Online (Sandbox Code Playgroud)

此示例代码产生此异常:

ValueError: time data '2019-01-19T15:13:00.000+01:00' does not match format '%Y-%m-%dT%H:%M:%S.%f%z'
Run Code Online (Sandbox Code Playgroud)

如果我们:从它工作的输入字符串中删除,则不会抛出异常。

当我们在 Python 3.7.2 上的 Windows 上运行该代码时,该代码也有效。

可能是因为不同的 Python 版本?我们如何解析或转换它而不会出错?

python python-datetime python-3.6 python-3.7

7
推荐指数
1
解决办法
3227
查看次数

如何在Python中按日期时间对列表进行排序?

我正在编写一个 .py 文件来按时间对列表进行排序,其中包含以下信息

日期、时间、emp_id、action_performed

stackoverflow 上有一个关于此问题的问题,但我无法完全理解(我是 python 新手)

我还检查了排序函数和日期时间库,但无法让它工作。

list = 
[
('2017/09/10 13:19:38', 'employee_id', 'enrolled'),
('2017/09/10 12:15:21', 'employee_id', 'deleted'),
('2017/09/10 21:19:34', 'employee_id', 'enrolled'),
('2017/09/10 22:42:50', 'employee_id', 'deleted'),
('2017/09/10 16:53:03', 'employee_id', 'enrolled')
]
Run Code Online (Sandbox Code Playgroud)

我只想知道首先执行了哪个操作。有人可以帮我吗?

python sorting python-datetime

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

如何计算该月的第一个星期一;蟒蛇3.3+

我需要在该月的第一个星期一运行月度报告并使用 Python 计算这一天。到目前为止,我拥有的代码将进入我们的 ETL 程序中的一个模块,并确定该日期是否实际上是该月的第一天。理想情况下,我需要的是,如果星期一是该月的第一个星期一,则仅在这一天运行报告(execute = 1)。否则,不要运行任何东西(execute = 0)。我拥有的:

# Calculate first Monday of the month

# import module(s)

from datetime import datetime, date, timedelta

today = date.today() # - timedelta(days = 1)
datee = datetime.strptime(str(today), "%Y-%m-%d")

print(f'Today: {today}')

# function finds first Monday of the month given the date passed in "today"

def find_first_monday(year, month, day):
    d = datetime(year, int(month), int(day))
    offset = 0-d.weekday() #weekday = 0 means monday
    if offset < 0:
        offset+=7
    return d+timedelta(offset)

# converts datetime …
Run Code Online (Sandbox Code Playgroud)

python date function python-3.x python-datetime

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

奇怪的 datetime.utcnow() 错误

考虑这个简单的 Python 脚本:

$ cat test_utc.py
from datetime import datetime

for i in range(10_000_000):
    first = datetime.utcnow()
    second = datetime.utcnow()

    assert first <= second, f"{first=} {second=} {i=}"
Run Code Online (Sandbox Code Playgroud)

当我从 shell 运行它时,就像python test_utc.py它完成时没有错误一样,正如预期的那样。但是,当我在 Docker 容器中运行它时,断言失败:

$ docker run -it --rm -v "$PWD":/code -w /code python:3.10.4 python test_utc.py
Traceback (most recent call last):
  File "/code/test_utc.py", line 7, in <module>
    assert first <= second, f"{first=} {second=} {i=}"
AssertionError: first=datetime.datetime(2022, 5, 24, 19, 5, 1, 861308) second=datetime.datetime(2022, 5, 24, 19, 5, 1, 818270) …
Run Code Online (Sandbox Code Playgroud)

python macos python-datetime docker macos-monterey

7
推荐指数
1
解决办法
516
查看次数