python如何将日期时间日期转换为十进制年份 [英] python how to convert datetime dates to decimal years

查看:918
本文介绍了python如何将日期时间日期转换为十进制年份的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在寻找一种将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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆