将一个时间转换为秒形式的时间戳:

var ts = ((DateTimeOffset)DateTime.UtcNow.AddDays(7)).ToUnixTimeSeconds()

这里涉及类型转换:(DateTimeOffset)DateTime

看下两个类的定义,并没有父子类的继承关系

C#中的转换有两种情况:

显式转换

一个对象转换为另外一个类型,会丢失细节,必须使用显式转换:

double num = 0.5;
int i = (int) num;

隐式转换

一个对象转换为另外一个类型,必定成功,可以用隐式转换:

int i = 1;
double num = i;

对于一个类,如果要实现形如(DateTimeOffset)DateTime的隐式转换,需要implicit关键字,可以看到DateTimeOffset中就有相关实现:

public static implicit operator DateTimeOffset(DateTime dateTime) =>
            new DateTimeOffset(dateTime);

直接使用:

DateTimeOffset offset = DateTime.UtcNow.AddDays(7);
var ts = offset.ToUnixTimeSeconds();