将Google Sheet日期序列值转换为人类可读日期

时间:2017-11-27 09:59:24

标签: python date google-sheets date-conversion

设置向上

我正在通过Google Drive Api阅读Python中的Google表格。

我有一个日期值 - 一个日期序列值,我需要将其转换为人类可读日期。

所以我得到了,

date = 42747

我知道这意味着日期为12-1-2017

问题

有一种简单的方法可以将42747转换为12-1-2017吗?

我见过this question,但它没有回答我的。

2 个答案:

答案 0 :(得分:1)

这样可行:

import datetime
def convert_xls_datetime(xls_date):
    return (datetime.datetime(1899, 12, 30)
            + datetime.timedelta(days=xls_date))

print(convert_xls_datetime(42747))

答案 1 :(得分:0)

这列出了 datedatetime 的单独函数。

import datetime
from typing import Union

_BASE_DATE = datetime.date(1899, 12, 30)
_BASE_DATETIME = datetime.datetime(_BASE_DATE.year, _BASE_DATE.month, _BASE_DATE.day)

def convert_date_from_gsheet(num_days: int, /) -> datetime.date:
    # Ref: https://stackoverflow.com/a/66738817/
    assert isinstance(num_days, int)
    return _BASE_GSHEET_DATE + datetime.timedelta(num_days)


def convert_date_to_gsheet(date: datetime.date, /) -> int:
    # Ref: https://stackoverflow.com/a/66738817/
    assert isinstance(date, datetime.date)
    return (date - _BASE_GSHEET_DATE).days


def convert_datetime_from_gsheet(num_days: Union[float, int], /) -> datetime.datetime:
    # Ref: https://stackoverflow.com/a/66738817/
    assert isinstance(num_days, (float, int))
    return _BASE_GSHEET_DATETIME + datetime.timedelta(num_days)