首頁  >  文章  >  後端開發  >  如何使用 gspread 取得正確的日期

如何使用 gspread 取得正確的日期

王林
王林轉載
2024-02-09 13:00:04499瀏覽

如何使用 gspread 获取正确的日期

問題內容

如何使用 Python 的 gspread 取得電子表格值?

假設有一個儲存格,因為指定了 m/d 作為儲存格顯示格式,所以看起來像 1/1,但實際上包含 2024/1/1。使用 get_all_values() 檢索此儲存格會傳回「1/1」。 我想要實際值“2024/1/1”,而不是工作表上顯示的值。 我該怎麼辦?

我將省略工作表取得部分。

values = workbook.worksheet(sheet_name).get_all_values()

value = 值[1][0] # 得到1/1


正確答案


問題與解決方法:

從您顯示的圖像、腳本和當前值中,我了解到您將 2024/01/01 的值作為日期物件放入單元格「a2」中。並且,儲存格值顯示為 1/1,採用數字格式。

在目前階段,當透過 sheets api 檢索該單元格值時,將檢索 1/1 作為 valuerenderoption: formatted_value 的預設請求。當valuerenderoption修改為unformatted_value時,取得45292的序號。可惜的是,現階段無法直接檢索輸入的2024/01/01 值。因此,以下流程需要它。

  1. 使用 valuerenderoption 從單元格中檢索序號:unformatted_value
  2. 將序號轉換為日期物件。
  3. 轉換日期格式。

當這個流程反映在你的展示腳本時,以下的修改如何?

修改後的腳本:

values = workbook.worksheet(sheet_name).get_all_values(value_render_option="UNFORMATTED_VALUE")
value = values[1][0]
date = datetime.fromtimestamp((int(value) - 25569) * 86400) # Ref: https://stackoverflow.com/a/6154953
formatted = date.strftime('%Y/%m/%d') # or date.strftime('%Y/%-m/%-d')  # or date.strftime('%Y/%#m/%#d')
print(formatted)
  • 如果儲存格「a2」的日期物件為2024/01/01,且1/1 以數字格式顯示,則執行此腳本時,formatted2024/01/01

  • 使用from datetime import datetime

參考文獻:

#

以上是如何使用 gspread 取得正確的日期的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除