Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3:将小数转换为日期时间_Python_Python 3.x_Decimal_Datetime Format - Fatal编程技术网

Python 3:将小数转换为日期时间

Python 3:将小数转换为日期时间,python,python-3.x,decimal,datetime-format,Python,Python 3.x,Decimal,Datetime Format,我有一个包含以下内容的Json: { 姓名:startTime, 价值:[ { 有效:对, 时间:43852.491953472221 } ] } 据我所知,小数点43852.491953472221表示自1900年1月1日以来的天数 有没有快速的方法将Python中的这一次转换为以下格式: import time print("Start time: ", time.ctime(time.time())) 输出: Start time: Wed Jan 22 14:10:50 2020

我有一个包含以下内容的Json:

{ 姓名:startTime, 价值:[ { 有效:对, 时间:43852.491953472221 } ] } 据我所知,小数点43852.491953472221表示自1900年1月1日以来的天数

有没有快速的方法将Python中的这一次转换为以下格式:

import time
print("Start time: ", time.ctime(time.time()))
输出:

Start time:  Wed Jan 22 14:10:50 2020
使用datetime.timedelta对象以及历元的datetime.datetime值:

from datetime import datetime, timedelta

EPOCH = datetime(1900, 1, 1)  # midnight 1st January 1900

def from_ordinal(ordinal, _epoch=EPOCH):
    return _epoch + timedelta(days=ordinal)
演示:

请注意,您给出的具体示例是未来2天47小时20分钟左右

如果你的意思是今天,有一段时间来创建你的帖子,那么你对时代的解释就不太正确了。你可能有一个;纪元实际上是1899-12-31 00:00:00,带有a,在这种情况下,任何等于或大于60的值都需要减去1:

EXCEL_EPOCH0 = datetime(1899, 12, 31)

def from_excel_ordinal(ordinal, _epoch=EXCEL_EPOCH0):
    if ordinal >= 60:
        ordinal -= 1  # Excel / Lotus 1-2-3 leap year bug, 1900 is not a leap year!
    # Excel doesn't support microseconds, ignore them as mere fp artefacts
    return (_epoch + timedelta(days=ordinal)).replace(microsecond=0)
这将产生:

>>> from_excel_ordinal(43852.491953472221)
datetime.datetime(2020, 1, 22, 11, 48, 24)
使用datetime.timedelta对象以及历元的datetime.datetime值:

from datetime import datetime, timedelta

EPOCH = datetime(1900, 1, 1)  # midnight 1st January 1900

def from_ordinal(ordinal, _epoch=EPOCH):
    return _epoch + timedelta(days=ordinal)
演示:

请注意,您给出的具体示例是未来2天47小时20分钟左右

如果你的意思是今天,有一段时间来创建你的帖子,那么你对时代的解释就不太正确了。你可能有一个;纪元实际上是1899-12-31 00:00:00,带有a,在这种情况下,任何等于或大于60的值都需要减去1:

EXCEL_EPOCH0 = datetime(1899, 12, 31)

def from_excel_ordinal(ordinal, _epoch=EXCEL_EPOCH0):
    if ordinal >= 60:
        ordinal -= 1  # Excel / Lotus 1-2-3 leap year bug, 1900 is not a leap year!
    # Excel doesn't support microseconds, ignore them as mere fp artefacts
    return (_epoch + timedelta(days=ordinal)).replace(microsecond=0)
这将产生:

>>> from_excel_ordinal(43852.491953472221)
datetime.datetime(2020, 1, 22, 11, 48, 24)

我强烈怀疑您有一个EXCEL datetime序号,在这种情况下,这是@MartijnPieters的副本是的,您似乎是正确的我强烈怀疑您有一个EXCEL datetime序号,在这种情况下,这是@MartijnPieters的副本是的,您似乎是正确的谢谢,这正是我的问题!谢谢,这正是我的问题!