【问题标题】:How to convert Julian date to standard date?如何将儒略日期转换为标准日期?
【发布时间】:2016-10-11 04:01:42
【问题描述】:

我有一个字符串作为 Julian 日期,例如 "16152" 表示 2016 年的第 152 天或 "15234" 表示 2015 年的第 234 天。

如何使用 Python 3 标准库将这些 Julian 日期转换为 20/05/2016 之类的格式?

我可以像这样得到 2016 年:date = 20 + julian[0:1],其中julian 是包含儒略日期的字符串,但我如何根据 1 月 1 日计算其余部分?

【问题讨论】:

标签: python string date python-3.x


【解决方案1】:

首先,创建一个datetime 对象(来自模块datetime

from datetime import datetime
from datetime import timedelta
julian = ... # Your julian datetime
date = datetime.strptime("1/1/" + jul[:2], "%m/%d/%y") 
# Just initializing the start date, which will be January 1st in the year of the Julian date (2 first chars)

现在添加从开始日期开始的天数:

daysToAdd = int(julian[2:]) # Taking the days and converting to int
date += timedelta(days = daysToAdd - 1)

现在,您可以按原样打印:

print(str(date))

或者你可以使用strftime()函数。

print(date.strftime("%d/%m/%y"))

阅读更多关于strftime格式字符串here

【讨论】:

  • 如果您正在打印对象,则无需在对象上调用str 函数。 print 函数将调用 __str__ 方法本身。就这样:例如print(datetime.now()) 就足够了
【解决方案2】:

.strptime() 方法支持一年中的某一天 格式:

>>> import datetime
>>>
>>> datetime.datetime.strptime('16234', '%y%j').date()
datetime.date(2016, 8, 21)

然后您可以使用strftime() 重新格式化日期

>>> date = datetime.date(2016, 8, 21)
>>> date.strftime('%d/%m/%Y')
'21/08/2016'

【讨论】:

  • 是否有可能在一天中的一小部分时间内也能获得时间?
【解决方案3】:

简单的方法

  • 从常规日期转换为儒略日期

print datetime.datetime.now().strftime("%y%j")

  • 从儒略日期转换为常规日期

print datetime.datetime.strptime('19155', '%y%j').strftime("%d-%m-%Y")

【讨论】:

    【解决方案4】:

    我用它来将 Juian 日期更改为 xml xsd:datetime

    def julianDate2ISO8601(d, offset='+00:00'):
        """
         return ISO8601 formated datetime from julian date
         optional offset  [+|-]hh:mm
        """
        d = str(d)  # make sure it is a string
        # replace leading number with correct century
        centuryArray = ['19','20','21']
        d = centuryArray[int(d[:1])] + d[1:]
        # format string to iso 8601 datetime
        return datetime.datetime.strptime(d, '%Y%j').date().strftime(
            '%Y-%m-%dT00:00:00') + offset
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-11
      • 2013-07-21
      • 2015-11-08
      • 1970-01-01
      • 1970-01-01
      • 2011-03-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多