如何在工作表上以其他格式显示日期值(Python日期为文本)

时间:2019-02-06 00:47:50

标签: python google-apps-script google-sheets google-sheets-api

我正在使用Google Sheets API在工作表中插入一些数据。 每行都有一个日期单元格,其日期格式为“ 2017-02-01 19:33:56 + 00:00” ,我希望它以此格式显示(02 2017年1月),但我想将原始格式隐藏在同一单元格中。

  

是否存在脚本或可用于以该格式显示日期的内容?

2 个答案:

答案 0 :(得分:1)

只需从格式菜单中添加自定义数字格式。这个应该可以解决“ dd MMM yyyy”的问题。日期不会改变,因此,如果您想回到原来的日期,则始终可以。您可以使用脚本在range.setNumberFormat

之间进行切换

您可以使用此脚本来设置NumberFormats():

Cannot read property 'type' of undefined

我对ss + 00:00不熟悉,不确定是什么意思。但是也许您可以查看下面的文档。您也许可以使用range.getNumberFormat()获取并保存该格式以备将来使用。

SpreadsheetApp.getActiveRange().setNumberFormat("dd MMM yyyy");

答案 1 :(得分:1)

此格式“ 2017-02-01 19:33:56 + 00:00” 无法为Google表格识别,这是因为它在最终版本中具有附加值,指示时区日期“ + 00:00” 的时候,我决定创建一个小脚本来获取该时区值,并在日期中添加/减去小时和分钟,以便我可以看到正确的小时我的时区。

from datetime import datetime, timedelta

def formatDatetime(o_date, f_hours=0, f_minutes=0):
    # ----- Removing the timezone from the data str
    date_a = o_date.split('+')
    date = date_a[0]
    #----------------------------------------------------
    # ----- Format/Add/Sub Hours and minutes
    date = datetime.strptime(date, '%Y-%m-%d %H:%M:%S')
    date = date + timedelta(hours=f_hours)
    date = date + timedelta(minutes=f_minutes)
    date_f = format(date, '%m/%d/%Y %H:%M:%S')
    # -------------------
    return date_f

现在,谷歌表将这个值识别为日期,因此我可以进行自定义格式设置,以在工作表中显示漂亮的日期。