如何将年份和日期转换为日期?

发布于 2024-08-24 18:43:48 字数 37 浏览 3 评论 0原文

我有一个年份值和一年中的某一天,想转换为日期(日/月/年)。

I have a year value and a day of year and would like to convert to a date (day/month/year).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

奈何桥上唱咆哮 2024-08-31 18:43:48
datetime.datetime(year, 1, 1) + datetime.timedelta(days - 1)
datetime.datetime(year, 1, 1) + datetime.timedelta(days - 1)
一人独醉 2024-08-31 18:43:48
>>> import datetime
>>> datetime.datetime.strptime('2010 120', '%Y %j')
datetime.datetime(2010, 4, 30, 0, 0)
>>> _.strftime('%d/%m/%Y')
'30/04/2010'
>>> import datetime
>>> datetime.datetime.strptime('2010 120', '%Y %j')
datetime.datetime(2010, 4, 30, 0, 0)
>>> _.strftime('%d/%m/%Y')
'30/04/2010'
谜泪 2024-08-31 18:43:48

toordinal() 和 < a href="http://docs.python.org/library/datetime.html#datetime.date.fromordinal" rel="noreferrer">fromordinal() 函数 <可以使用 code>date 类:

from datetime import date
date.fromordinal(date(year, 1, 1).toordinal() + days - 1)

The toordinal() and fromordinal() functions of the date class could be used:

from datetime import date
date.fromordinal(date(year, 1, 1).toordinal() + days - 1)
呆橘 2024-08-31 18:43:48

因为现在很常见,所以使用 pandas 选项,使用具有指定单位和原点的 pd.to_datetime

import pandas as pd

day, year = 21, 2021

print(pd.to_datetime(day-1, unit='D', origin=str(year)))
# 2021-01-21 00:00:00

since it is pretty common these days, a pandas option, using pd.to_datetime with specified unit and origin:

import pandas as pd

day, year = 21, 2021

print(pd.to_datetime(day-1, unit='D', origin=str(year)))
# 2021-01-21 00:00:00
千寻… 2024-08-31 18:43:48

使用 mx.DateTime 模块获取日期类似于上面使用 datetimetimedelta 提出的方法。即:

import mx.DateTime as dt 
date = dt.DateTime(yyyy,mm,dd) + dt.DateTimeDeltaFromDays(doy-1)

因此,假设您知道年份(例如 2020 年)和 doy(一年中的某一天,例如 234),则:

date = dt.DateTime(2020,1,1) + dt.DateTimeFromDays(233) 

返回

2020-08-21 00:00:00.00

mx.DateTime 库的优点是具有许多有用的功能。根据其主页中的描述:

  • 解析日期/时间字符串值几乎无缝的方式。
  • 提供与许多不同的替代日期/时间之间的转换例程
    存储格式。
  • 包括一个易于使用的 C API,使得
    集成轻而易举。
  • 快速、记忆高效、准确。
  • 格鲁吉亚历和儒略历支持。
  • 有效日期范围广泛(包括 BC 日期)。
  • 稳定、强大且便携(mxDateTime 已存在近 15 年
    现在)。
  • 与 Python 的时间和日期时间模块完全互操作。

Using the mx.DateTime module to get the date is similar to what has been proposed above using datetime and timedelta. Namely:

import mx.DateTime as dt 
date = dt.DateTime(yyyy,mm,dd) + dt.DateTimeDeltaFromDays(doy-1)

So, given that you know the year (say, 2020) and the doy (day of the year, say 234), then:

date = dt.DateTime(2020,1,1) + dt.DateTimeFromDays(233) 

which returns

2020-08-21 00:00:00.00

The advantage of the mx.DateTime library is that has many useful features. As per description in its homepage:

  • Parses date/time string values in an almost seamless way.
  • Provides conversion routines to and from many different alternative date/time
    storage formats.
  • Includes an easy-to-use C API which makes
    integration a breeze.
  • Fast, memory efficient, accurate.
  • Georgian and Julian calendar support.
  • Vast range of valid dates (including B.C. dates).
  • Stable, robust and portable (mxDateTime has been around for almost 15 years
    now).
  • Fully interoperates with Python's time and datetime modules.
空名 2024-08-31 18:43:48
>>>import datetime
>>>year = int(input())
>>>month = int(input())
>>>day = int(input())
data = datetime.datetime(year,month,day)
daynew = data.toordinal()
yearstart = datetime.datetime(year,1,1)
day_yearstart = yearstart.toordinal()
print ((daynew-day_yearstart)+1)
>>>import datetime
>>>year = int(input())
>>>month = int(input())
>>>day = int(input())
data = datetime.datetime(year,month,day)
daynew = data.toordinal()
yearstart = datetime.datetime(year,1,1)
day_yearstart = yearstart.toordinal()
print ((daynew-day_yearstart)+1)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文