abb*_*ood 5 python date date-formatting google-sheets-api
我有一个电子表格,其日期格式设置为“ Jan 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',[])
Run Code Online (Sandbox Code Playgroud)
值给我“ 1月30日”,我想读成1/30/2017..我该怎么做?
深入研究电子表格sheets.value.get http文档(与此处的python api客户端方法参考相对应,我了解到可以将valueRenderOptionas设置为UNFORMATTED_VALUE..
但是当我运行时,我得到了这个奇怪的数字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)
Run Code Online (Sandbox Code Playgroud)
“怪异数字”被称为“序列化日期时间值”或“日期序列值”。显示为日期(yyyy-mm-dd)的0值为 1899-12-30。整数是天,小数是小时,分钟等。
参考文献:
h / t 山姆·柏林