Golang time.Parse () Форматирование с не временным числом - PullRequest
0 голосов
/ 27 ноября 2018

Я портирую код из python и имею функцию, которая принимает строку форматирования и эквивалентную строку даты и времени и создает объект datetime:

import datetime
def retrieve_object(file_name, fmt_string):
    datetime = datetime.strptime(file_name, fmt_string)
    // Do additional datetime calculations here

Я попытался создать эквивалентную функцию в Go:

import(
    "time"
)

func retrieve_object(file_name string, fmt_string string) {
    time_out, _ := time.Parse(fmt_string, file_name)  
    // Do additional time.Time calculations here

Это анализирует время. Время правильно в этом случае:

file_name := "KICT20170307_000422" 
fmt_string := "KICT20060102_150405"
// returns 2017-03-07 00:04:22 +0000 UTC

Но не удается правильно проанализировать в этом случае:

file_name := "KICT20170307_000422_V06.nc" 
fmt_string := "KICT20060102_150405_V06.nc"
// returns 2006-03-07 00:04:22 +0000 UTC

Я подозреваю, что это связано сдополнительный номер без даты («06») в строке даты и времени.Можно ли создать функцию, которая может создать объект time.Time с произвольной строкой форматирования и строковым представлением даты и времени, используя встроенную функцию time.Parse?Если нет, есть ли сторонние решения, которые могли бы работать?

1 Ответ

0 голосов
/ 27 ноября 2018

Я подозреваю, что это очевидно, но здесь все идет ...

просто раздень это:

func removeSuffix(s string) (string, error) {
    i := strings.LastIndexByte(s, '_')

    if i < 0 {
         return "", fmt.Errorf("invalid input")
    }

    runes := []rune(s)

    result := runes[0:i]

    return string(result), nil
}

Вот игровая площадка https://play.golang.org/p/JbHt4Png-eT

...