Я создаю приложение Go, которое будет использовать GRPC и protobuf. Моя служба RPC должна принять сообщение, содержащее тип google.protobuf.Timestamp
, проанализировать его и в конечном итоге сохранить в базе данных или выполнить с ним еще несколько операций.
Я не понимаю, что считать допустимым вводом для типа google.protobuf.Timestamp
. Я хочу использовать следующий формат для даты и времени со смещением часового пояса.
2019-02-15T13:00:00+01:00
Вот прототип, который я использую.
syntax = "proto3"
package example;
import "google/protobuf/timestamp.proto"
service Tester {
rpc ParseDateTimeStamp(TSRequest) returns (TSReply) {}
}
message TSRequest {
google.protobuf.Timestamp dts = 1;
}
message TSReply {
string message = 1;
}
Проблема в том, что когда я отправляю сообщение на сервер GRPC, содержащее отметку даты и времени. Я ожидаю, что тип *tsbp.Timestamp
для 2019-02-15T13:00:00+01:00
datetimestamp будет действительным и даст мне соответствующие секунды от эпохи. (После вызова GetSeconds()
из timestamp.go)
Вызов ptypes.TimestampString(ts *tspb.Timestamp)
возвращает 1970-01-01T00:00:00Z
для примера ввода выше.
google.protobuf.Timestamp
принимает отметки даты и времени со смещением + -?
Или мне нужно ввести тип String, а затем проанализировать time.Time
с помощью time.Format
вместо использования типа переменной timestamp в protobuf? Если да, не могли бы вы привести пример этого?
TSReply
- хотите ли вы, чтобы оно включало исходное смещение часового пояса? Если это так, ваше входное значениеptype.Timestamp
не имеет хранилища значения TZ, поэтому любое смещение необходимо будет включить в дополнительное поле. - person colm.anseo   schedule 04.08.2019