How to convert Julian date to standard date?

后端 未结 4 756
不知归路
不知归路 2021-01-12 17:48

I have a string as Julian date like \"16152\" meaning 152\'nd day of 2016 or \"15234\" meaning 234\'th day of 2015.

How can I convert these

相关标签:
4条回答
  • 2021-01-12 18:32

    Easy way

    • Convert from regular date to Julian date

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

    • Convert from Julian date to regular date

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

    0 讨论(0)
  • 2021-01-12 18:34

    I used this for changing a Juian date to 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

    0 讨论(0)
  • 2021-01-12 18:35

    Well, first, create a datetime object (from the module 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)
    

    Now add the days from the start date:

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

    Now, you can just print it as is:

    print(str(date))
    

    Or you can use strftime() function.

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

    Read more about strftime format string here

    0 讨论(0)
  • 2021-01-12 18:43

    The .strptime() method supports the day of year format:

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

    And then you can use strftime() to reformat the date

    >>> date = datetime.date(2016, 8, 21)
    >>> date.strftime('%d/%m/%Y')
    '21/08/2016'
    
    0 讨论(0)
提交回复
热议问题