我正在实现预定发布对象的功能.用户选择发布时间,我创建了一个每分钟运行的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)
抱歉相当愚蠢的问题,但我需要讨论这个问题.谢谢
我是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) 我正在从传感器收集一些数据,我从中获取时间戳,如下所示:
"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'
你可以有一个小时的差异,所以我的问题是哪一个更好用?
如果我想在我的程序中添加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中,您可以选择一年中的随机日期.例如,如果年份是2010年,则返回日期可能是2010年6月15日
我已经看到许多关于如何定义自己的函数的问题,这些函数执行与此类似的操作,但我不知道如何使用 timedelta 的内置函数。有没有人有使用 timedelta.round() 的例子?我有想要舍入到最近的全天的 timedelta 对象。
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Timedelta.round.html上的文档是:
时间增量.round
将 Timedelta 舍入到指定的分辨率
参数:
freq : 表示舍入分辨率的频率字符串
返回:四舍五入到给定分辨率的新 Timedelta
freq如果频率无法转换,则引发:ValueError
目前,我们正在开发一个应用程序,该应用程序尝试使用 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 版本?我们如何解析或转换它而不会出错?
我正在编写一个 .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 计算这一天。到目前为止,我拥有的代码将进入我们的 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 脚本:
$ 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 ×10
python-datetime ×10
datetime ×2
python-3.x ×2
date ×1
docker ×1
function ×1
macos ×1
orm ×1
python-2.7 ×1
python-3.6 ×1
python-3.7 ×1
sorting ×1
sqlalchemy ×1
time ×1
timedelta ×1