Как отформатировать дату с зоной по умолчанию без смещения чисел c - PullRequest
0 голосов
/ 06 января 2020

Если я сканирую дату из базы данных в структуру, которая содержит дату во времени. По умолчанию она будет печататься так:

"2019-11-27T16:38:55+07:00"

Есть ли способ отформатировать ее так, без повторного парсинг всего, что имеет время. Тип времени?

"0001-01-01T00:00:00Z"

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

Любое предложение?

1 Ответ

1 голос
/ 06 января 2020

Вы можете использовать .UT C () метод time.Time, чтобы получить значение времени в часовом поясе UT C, а затем переформатировать его снова в строку, после чего вы будете получить эквивалентную дату в UT C.

str1 := "2019-11-27T16:38:55+07:00"
tme1, _ := time.Parse(time.RFC3339, str1)

tme2 := tme1.UTC()
str2 := tme2.Format(time.RFC3339)

fmt.Println("str1", str1) // str1 2019-11-27T16:38:55+07:00
fmt.Println("str2", str2) // str2 2019-11-27T09:38:55Z

Рабочая площадка https://play.golang.org/p/7uRKDeRZBUx


Это для API, который будет используется интерфейсным приложением, которое требует его форматирования следующим образом.

Находится ли он в javascript, go или любом другом языке программирования / сценариев, анализируя эквивалентную строку дат в другом часовом поясе приведёт эквивалентную дату. Посмотрите на приведенный ниже пример в js:

console.log(new Date("2019-11-27T16:38:55+07:00").toString())
// "Wed Nov 27 2019 16:38:55 GMT+0700 (Western Indonesia Time)"

console.log(new Date("2019-11-27T09:38:55Z").toString())
// "Wed Nov 27 2019 16:38:55 GMT+0700 (Western Indonesia Time)"

См., Что обе операции разбора даты генерируют одну и ту же строку после анализа и преобразования в строку

...