はじめに
こんにちは、バッテラです。
Json.UtitilyでDateTime型の変数を保存しようとしてもなぜかできませんでした。
調べた結果 DateTime がシリアライズすることができないということが分かりました。
なんとか日付を保存する方法はないかと模索したところ、
DateTimeが持つToBinaryとFromBinary を使うことで保存・復元できたので、
その方法について共有したいと思います。
環境
- MacOS BigSur (11.4)
- Unity (2020.3.14f1)
DateTime型をToBinaryで変換
DateTime型の変数は保存できないので、 代わりにlong型の変数を用意します。
long型の変数に対して、DateTime型変数をToBinaryで変換したものをセットします。
long binValue = DateTime.Now.ToBinary();
long型であればシリアライズ可能でした。
long型をFormBinaryで復元
次は復元です。
json文字列からデシリアライズした段階ではまだlong型の変数であるため、
このlong型の変数から FromBinary でDateTime型に変換して戻します。
DateTime date = DateTime.FromBinary(binValue);
おわりに
今回はDateTimeをシリアライズする方法でしたー。
それでは、また。
読者登録・Twitterのフォローをしていただけると、ハッピーになります。