Как отобразить значение даты в другом формате (от даты к тексту) на листе - PullRequest
0 голосов
/ 06 февраля 2019

Я использую Google Sheets API для вставки некоторых данных на свой лист.В каждой строке есть ячейка даты, которая имеет значения в этом формате "2017-02-01 19: 33: 56 + 00: 00" Я бы хотел, чтобы она отображалась в этом формате (02 января2017) но я бы хотел, чтобы оригинальный формат был спрятан в той же ячейке.

Есть ли сценарий или что-то, что я могу использовать для отображения даты в этом формате?

Ответы [ 2 ]

0 голосов
/ 06 февраля 2019

Этот формат "2017-02-01 19: 33: 56 + 00: 00" не распознается для Google Sheets, потому что он имеет дополнительное значение к финалу, которое указывает часовой поясдата "+ 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

Теперь лист google распознает это значение как дату, поэтому я могу сделать пользовательское форматирование для отображения хорошей даты на моем листе.

0 голосов
/ 06 февраля 2019

Просто добавьте пользовательский формат номера из меню форматирования.Этот должен сделать трюк "дд МММ гггг".Дата не меняется, поэтому, если вы хотите вернуться к старому, вы всегда можете.Вы можете использовать скрипт для переключения между ними, используя range.setNumberFormat

Вы можете использовать этот скрипт для установкиNumberFormats ():

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

Я не знаком с SS+00: 00 не уверен, что это значит.Но, возможно, вы можете проверить документацию ниже.Вы можете использовать range.getNumberFormat () для получения и сохранения этого формата для будущего использования.

var formatString=SpreadsheetApp.getActiveRange().getNumberFormat();
...