0

x/y 軸に整数を取る非常に単純なチャート コンポーネントがあります。私の問題は、このチャートで日付/フロートを表す必要があることです。だから私は比例的に日付をスケールで分配することができると思った. つまり、次の日付があるとしましょう: 2008 年 1 月 1 日、2008 年 2 月 1 日、2008 年 12 月 31 日。アルゴリズムは、0、16.667、および 100 を返します (1 か月 = 16.667%)。

datetimePython 2.5 のおよびクラスで遊んでみましたが、timedeltaこれを達成できません。ティック数を使用できると思いましたが、からその情報を取得することさえできませんdatetime

このアルゴリズムを Python で記述する方法はありますか? そうでなければ、他のアイデアやアルゴリズムはありますか?

4

3 に答える 3

3

日付を扱っている場合は、メソッドtordinalを使用できます。

import datetime

jan1=datetime.datetime(2008,1,1)
dec31=datetime.datetime(2008,12,31)
feb1=datetime.datetime(2008,02,01)

dates=[jan1,dec31,feb1]
dates.sort()

datesord=[d.toordinal() for d in dates]
start,end=datesord[0],datesord[-1]

def datetofloat(date,start,end):
    """date,start,end are ordinal dates
    ie Jan 1 of the year 1 has ordinal 1
       Jan 1 of the year 2008 has ordinal 733042"""
    return (date-start)*1.0/(end-start)

print datetofloat(dates[0],start,end)
  0.0
print datetofloat(dates[1],start,end)
  0.0849315068493*
print datetofloat(dates[2],start,end)
  1.0

※16.67%は1年の約2ヶ月分なので、2月1日の割合はその約半分。

于 2009-06-18T00:51:12.480 に答える