我有一个将 ASP.NET DateTime 转换为 unix 时间的结构,如下所示:
public struct UnixDateTime
{
private readonly int _value;
public UnixDateTime(int value)
{
this._value = value;
}
public static implicit operator UnixDateTime(DateTime dateTime)
{
DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
return new UnixDateTime((int)(dateTime - epoch).TotalSeconds);
}
public static implicit operator DateTime(UnixDateTime unixDateTime)
{
return new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).AddSeconds(unixDateTime);
}
public static implicit operator int(UnixDateTime unixDateTime)
{
return unixDateTime._value;
}
public static implicit operator string(UnixDateTime unixDateTime)
{
return unixDateTime._value.ToString();
}
}
未经测试,请不要在未经测试的情况下在他们的代码中使用它。
无论如何,当我将此值存储在 ViewModel 中时,将其发送到视图,然后调用:
@Html.Raw(Json.Encode(Model))
它将为该属性输出一个空对象“{}”。
为了让 Json.Encode 正确输出整数值,我需要将哪些方法添加到我的结构中?最好,我希望它不输出“对象”,而是输出“值”......所以我不想要:
"Date": {"Value": 123456}
反而:
"Date": 123456
我知道我可以在结构上添加一个吸气剂,让它像我不想要的那样输出,但我希望它的工作方式类似于 string 或 int 类型的工作方式。如果不完全重做 Json.Encode,这可能是不可能的吗?
谢谢!