7

私はエポックからの日付で作業していて、すでに取得しています。たとえば、次のようになります。

date = 6928727.56235

これを別の相対形式に変換して、これをエポックに関連するものに変換できるようにします。

time.gmtime(date)を使用して、

year=1970, mon=3, day=22, hour=4, min=38, sec=47

エポックは'01/01/197000:00:00'に始まると思うので、メソッドは次のような相対的な日付を返す必要があります。

'2 months 21 days 04:38:47'

何か役に立ちますか?

4

4 に答える 4

5

このメソッドは、「2か月22日04:38:47」のような相対日付を返す必要があります。

1か月は28日から31日の間なので、それはできません。「2か月と22日」という表現は、81日から84日の間のことを意味します。(または、月が連続している必要がない場合は、78日から84日の間)。

したがって、必要なのは単に無意味です。相対的な日時は、日数が重要でなくなるほど差が大きくなるまで、日、時間、秒でのみカウントできます。その場合、月または年でカウントを開始できます(ただし、日を含めることはできません)。もう)。

つまり、「5年2か月」、「80日3時間」、「200年」と言うことができます。しかし、「2ヶ月3日」や「5年20日」とは言えません。ステートメントは単に意味がありません。

したがって、正解は確かにeumirosです

timedelta(seconds=6928727.56235)

しかし今、あなたはその理由も知っています。

(もちろん、月のあるあなたは実際には月の満ち欠けを意味し、長さは固定されています。:))

于 2011-01-14T17:45:16.223 に答える
4
from datetime import timedelta

a = timedelta(seconds=6928727.56235)

# a is now datetime.timedelta(80, 16727, 562350)

print "%d days %02d:%02d:%02d" % (a.days, a.seconds / 3600, (a.seconds / 60) % 60, a.seconds % 60)

を返します80 days 04:38:47。これは正しいですが、OPが望んでいたものとは異なります(2か月21日ではなく80日)。

于 2011-01-14T17:30:21.557 に答える
1

time.gmtimeはParseTupleオブジェクトを返し、タプルの個々の要素を使用して計算を行うことができます。このようなもの

>>> time_epoch = time.gmtime(0)
>>> time_at_hand = time.gmtime(6928727.56235)
>>> print "It's been %d days somewhat like  %d months, %d days and %d hours, %d  minutes, %d seconds " % (time_at_hand.tm_yday - time_epoch.tm_yday, time_at_hand.tm_mon - time_epoch.tm_mon , time_at_hand.tm_mday - time_epoch.tm_mday, time_at_hand.tm_hour - time_epoch.tm_hour, time_at_hand.tm_min - time_epoch.tm_min, time_at_hand.tm_sec - time_epoch.tm_sec)
It's been 80 days somewhat like  2 months, 21 days and 4 hours, 38  minutes, 47 seconds 
于 2011-01-14T17:35:07.020 に答える
0

Eumiroの回答に似ていますが、60で割る必要はありません。代わりに、Pandasタイムスタンプを使用して、エポックの最初からの差を取ります。

date = 6928727.56235
import pandas as pd
pd.Timestamp(datetime.fromtimestamp(date))-pd.Timestamp(datetime.fromtimestamp(0))

戻り値

Timedelta('80 days 04:38:47.562350')
于 2019-06-02T05:01:37.397 に答える