我有一个电子表格,其日期格式为“1月30日”等,但具有实际日期值。
我使用python google Sheets API获取数据,如下所示:
def get_spreadsheet_sheets(service, spreadsheetId):
spreadsheet = service.spreadsheets().get(spreadsheetId=spreadsheetId).execute()
dateCell = "C15"
for sheet in spreadsheet['sheets']:
sheetTitle = sheet['properties']['title']
rangeName = "%s!%s" % (sheetTitle, dateCell)
result = service.spreadsheets().values().get(
spreadsheetId=spreadsheetId, range=rangeName).execute()
values = result.get('values',[])
值给了我'1月30',我想实际读作1/30/2017
..我怎么能这样做?
深入挖掘spreadsheets.value.get http documentation(对应于python api客户端方法引用here我了解到我可以将valueRenderOption
的选项设为UNFORMATTED_VALUE
.. < / p>
然而,当我跑步时,我得到Jan 30
的这个奇怪数字:42765
这个号码的格式是什么?我知道这不是一个unix时间戳b / c转换它会返回一个非感性的日期
此代码有效,但使用python日期格式(它还假设年份是当前年份......但显然并非总是如此):
def get_spreadsheet_sheets(service, spreadsheetId):
spreadsheet = service.spreadsheets().get(spreadsheetId=spreadsheetId).execute()
dateCell = "C15"
for sheet in spreadsheet['sheets']:
sheetTitle = sheet['properties']['title']
rangeName = "%s!%s" % (sheetTitle, dateCell)
result = service.spreadsheets().values().get(
spreadsheetId=spreadsheetId, range=rangeName).execute()
values = result.get('values',[])
dateStr = "%s %s" % (values[0][0], datetime.date.today().year)
cellDate = datetime.datetime.strptime(dateStr, '%b %d %Y')
print(cellDate)
答案 0 :(得分:4)
“奇怪的数字”,它被称为“序列化日期时间值”或“日期序列值”。显示为日期(yyyy-mm-dd)的0值为1899-12-30
。整数是天,分数是小时,分钟等。
相关:Converting Google spreadsheet date into a JS Date object?
参考文献:
h / t Sam Berlin