设置向上
我正在通过Google Drive Api阅读Python中的Google表格。
我有一个日期值 - 一个日期序列值,我需要将其转换为人类可读日期。
所以我得到了,
date = 42747
我知道这意味着日期为12-1-2017
。
问题
有一种简单的方法可以将42747
转换为12-1-2017
吗?
我见过this question,但它没有回答我的。
答案 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)
这列出了 date
和 datetime
的单独函数。
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)