python如何将日期时间日期转换为十进制年份 [英] python how to convert datetime dates to decimal years
问题描述
我正在寻找一种将datetime对象转换为十进制年的方法。以下是一个例子
I am looking for a way to convert datetime objects to decimal year. Below is an example
>>> obj = SomeObjet()
>>> obj.DATE_OBS
datetime.datetime(2007, 4, 14, 11, 42, 50)
如何将datetime.datetime(2007,4,14,11,42,50)转换为十进制数?从这种格式dd / mm / yyyy到这种格式yyyy.yyyy
How do i convert datetime.datetime(2007, 4, 14, 11, 42, 50) to decimal years? From this format dd/mm/yyyy to this kind of format yyyy.yyyy
推荐答案
from datetime import datetime as dt
import time
def toYearFraction(date):
def sinceEpoch(date): # returns seconds since epoch
return time.mktime(date.timetuple())
s = sinceEpoch
year = date.year
startOfThisYear = dt(year=year, month=1, day=1)
startOfNextYear = dt(year=year+1, month=1, day=1)
yearElapsed = s(date) - s(startOfThisYear)
yearDuration = s(startOfNextYear) - s(startOfThisYear)
fraction = yearElapsed/yearDuration
return date.year + fraction
演示:
>>> toYearFraction(dt.today())
2011.47447514
此方法可能是准确的第二(或者如果夏令时或其他奇怪的地区事情有效)。它也可以在leapyears期间正常工作。如果您需要大量的解决方案(例如由于地球旋转的变化),您最好查询网络服务。
This method is probably accurate to within the second (or the hour if daylight savings or other strange regional things are in effect). It also works correctly during leapyears. If you need drastic resolution (such as due to changes in the Earth's rotation) you are better off querying a net service.
这篇关于python如何将日期时间日期转换为十进制年份的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!