C# c语言中的Google.Protobuff timestamp.proto

C# c语言中的Google.Protobuff timestamp.proto,c#,protocol-buffers,C#,Protocol Buffers,我已经用google.proto.Timestamp成功编译了.proto文件,并用proto生成了.cs文件。我遇到的唯一问题是c代码中的初始化 我尝试了以下方法: .proto文件 C文件 上面的编译没有错误,但给了我这个错误:对象引用未设置为对象的实例。我尝试了一些其他方法,但由于帮助较少,它无法修复错误 请帮我解决这个问题 谢谢时间戳是类,因此您必须先创建它,如下所示: test._timeStamp = new Timestamp() { Seconds = DateTime.Now.

我已经用google.proto.Timestamp成功编译了.proto文件,并用proto生成了.cs文件。我遇到的唯一问题是c代码中的初始化

我尝试了以下方法:

.proto文件

C文件

上面的编译没有错误,但给了我这个错误:对象引用未设置为对象的实例。我尝试了一些其他方法,但由于帮助较少,它无法修复错误

请帮我解决这个问题


谢谢

时间戳是类,因此您必须先创建它,如下所示:

test._timeStamp = new Timestamp() { Seconds = DateTime.Now.Second }

时间戳是类,因此您必须首先像这样创建它:

test._timeStamp = new Timestamp() { Seconds = DateTime.Now.Second }

以防有人无意中发现这篇文章

下面是一个代码示例:

var unixTimeMS = DateTimeOffset
    .UtcNow
    .ToUnixTimeMilliseconds();

var seconds = unixTimeMS / 1000;
var nanos = (int)((unixTimeMS % 1000) * 1e6);

var lul = new ProtoModel
{
    Timestamp = new Google.Protobuf.WellKnownTypes.Timestamp()
    {
        Seconds = seconds,
        Nanos = nanos
    }
};

var unixTimeMSBack = lul.Timestamp
                .ToDateTimeOffset()
                .ToUnixTimeMilliseconds();

以防有人无意中发现这篇文章

下面是一个代码示例:

var unixTimeMS = DateTimeOffset
    .UtcNow
    .ToUnixTimeMilliseconds();

var seconds = unixTimeMS / 1000;
var nanos = (int)((unixTimeMS % 1000) * 1e6);

var lul = new ProtoModel
{
    Timestamp = new Google.Protobuf.WellKnownTypes.Timestamp()
    {
        Seconds = seconds,
        Nanos = nanos
    }
};

var unixTimeMSBack = lul.Timestamp
                .ToDateTimeOffset()
                .ToUnixTimeMilliseconds();

大多数人可能只想使用helper方法:

using Google.Protobuf.WellKnownTypes;

var timestamp = Timestamp.FromDateTime(DateTime.UtcNow)

大多数人可能只想使用helper方法:

using Google.Protobuf.WellKnownTypes;

var timestamp = Timestamp.FromDateTime(DateTime.UtcNow)
给任何人一个完整的例子。 更多信息

原型

发送请求

var request = new SendMessageRequest();
request.requestDate = DateTime.Now.ToTimestamp();
request.requestDate = DateTimeOffset.Now.ToTimestamp();
C读响应

var response = new SendMessageResponse();
DateTimeOffset dateOffset = response.responseDate.ToDateTimeOffset();
DateTime date = response.responseDate.ToDateTime();
给任何人一个完整的例子。 更多信息

原型

发送请求

var request = new SendMessageRequest();
request.requestDate = DateTime.Now.ToTimestamp();
request.requestDate = DateTimeOffset.Now.ToTimestamp();
C读响应

var response = new SendMessageResponse();
DateTimeOffset dateOffset = response.responseDate.ToDateTimeOffset();
DateTime date = response.responseDate.ToDateTime();

下面是我将现有DateTime实例转换为时间戳的尝试:

// doc.CreateOn is a DateTime 
Timestamp.FromDateTime(DateTime.SpecifyKind(doc.CreatedOn, DateTimeKind.Utc));

下面是我将现有DateTime实例转换为时间戳的尝试:

// doc.CreateOn is a DateTime 
Timestamp.FromDateTime(DateTime.SpecifyKind(doc.CreatedOn, DateTimeKind.Utc));