次のように、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 を完全にやり直さないと、これは不可能なのでしょうか?
ありがとう!