Python 官方文档:入门教程 => 点击学习
目录python:获取“ 3年前的今天”的日期时间ps:Python获取三年前的日期python处理几年前几月前几日前的时间python3 获取n年前日期Py
Python: get datetime for '3 years aGo today'
在Python中,如何获取" 3年前的今天"的datetime对象?
更新:FWIW,我不太在乎准确性……也就是说,今天是2月29日,我不在乎我的答案是2月28日还是3月1日。 在这种情况下,简洁比可配置性更重要。
相关讨论
如果需要精确,请使用dateutil模块来计算相对日期:
from datetime import datetime
from dateutil.relativedelta import relativedelta
three_yrs_ago = datetime.now() - relativedelta(years=3)
感谢您的准确性。即使OP不在乎准确性,其他人也可能会。
import datetime
datetime.datetime.now() - datetime.timedelta(days=3*365)
ED:为了正确地解决the年问题,
def subtract_years(dt, years):
try:
dt = dt.replace(year=dt.year-years)
except ValueError:
dt = dt.replace(year=dt.year-years, day=dt.day-1)
return dt
def add_years(dt, years):
try:
result = datetime.datetime(dt.year + years, dt.month, dt.day, dt.hour, dt.minute, dt.second, dt.microsecond, dt.tzinfo)
except ValueError:
result = datetime.datetime(dt.year + years, dt.month, dt.day - 1, dt.hour, dt.minute, dt.second, dt.microsecond, dt.tzinfo)
return result
>>> add_years(datetime.datetime.now(), -3)
datetime.datetime(2008, 3, 1, 12, 2, 35, 22000)
>>> add_years(datetime.datetime(2008, 2, 29), -3)
datetime.datetime(2005, 2, 28, 0, 0)
尽管使用dateutil的答案很好,但是另一种方法是在PyPI上使用pendulum包。有关更多信息,请参阅其文档。
>>> import pendulum
>>> dt = pendulum.now().subtract(years=3)
>>> dt
DateTime(2015, 10, 5, 17, 44, 41, 82598, tzinfo=Timezone('America/New_York'))
>>> type(dt)
pendulum.datetime.DateTime
如果您需要当前日期时间来进一步使用,则可能应该先将pendulum.now()保存到变量中,然后再使用该变量!
如果您确实想避免时区,请使用.naive()。
您不需要将结果转换为原生Python对象,但是如果确实需要,一种实现方法是:
>>> import datetime
>>> pydt = datetime.datetime.fromisofORMat(dt.isoformat())
>>> pydt
datetime.datetime(2015, 10, 5, 17, 44, 41, 82598, tzinfo=datetime.timezone(datetime.timedelta(days=-1, seconds=72000)))
>>> type(pydt)
datetime.datetime
看不到它,它非常简单明了,
In [1]: import datetime
In [2]: dt = datetime.datetime.today()
In [3]: datetime.datetime(year=dt.year-3, month=dt.month, day=dt.day)
Out[3]: datetime.datetime(2016, 4, 11, 0, 0)
为什么不简单在替换年份之前检查a年。
这不需要任何额外的程序包或try:Except。
def years_ago(dt, years):
if dt.month == 2 and dt.day == 29:
dt = dt.replace(day=28)
return dt.replace(year=dt.year - years)
In [3]: import datetime as dt
In [4]: today=dt.date.today()
In [5]: three_years_ago=today-dt.timedelta(days=3*365)
In [6]: three_years_ago
Out[6]: datetime.date(2008, 3, 1)
three_yrs_ago_day = (datetime.now() - relativedelta(years=3)).strftime('%Y%m%d')
def conv_time(t):
min = int(re.findall('\d+', t)[0])
print(min,'---')
dt = arrow.now()
if u'秒' in t:
s = (dt - timedelta(seconds=min))
elif u'分钟' in t:
s = (dt - timedelta(minutes=min))
elif u'小时' in t:
s = (dt - timedelta(hours=min))
elif u'天' in t:
s = (dt - timedelta(days=min))
elif u'周' in t:
s = (dt - timedelta(weeks=min))
elif u'月' in t:
s = dt.shift(months=-min)
elif u'年' in t:
s =str(int(datetime.datetime.now().strftime("%Y"))-min)+"-"+datetime.datetime.now().strftime("%m-%d")
else:
t += ", " + current_year
s = datetime.strptime(t, "%m-%d, %Y")
return int(time.mktime(s.timetuple()))
import time
import datetime
import random
#13位时间戳
temp=time.time()
timestamp=int(round(temp*1000))
str_timestamp=str(timestamp)
t=datetime.datetime.now()
#15年前
d2=(t+datetime.timedelta(days=-365*15)).strftime("%Y%m%d")
#23年前
d3=(t+datetime.timedelta(days=-365*23)).strftime("%Y%m%d")
print(str_timestamp)
print(d2)
print(d3)
输出
Macname@MacdeMacBook-Pro Desktop % python3 test.py
1610095883568
20060112
19980114
macname@MacdeMacBook-Pro Desktop %
到此这篇关于Python:获取“ 3年前的今天”的日期时间的文章就介绍到这了,更多相关Python内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
--结束END--
本文标题: Python获取"3年前的今天"的日期时间问题
本文链接: https://www.lsjlt.com/news/177372.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0