2016-10-05 7 views
0

TimeSpanシリアル化のカスタムフォーマットを指定することはできますか? Newtonsoft.Jsonを使用してください。newtonsoft jsonシリアライズタイムパンフォーマット

私はフォーマットHHでシリアライズされた文字列を持っていると思います。たとえば、ミリメートルのように:

TimeSpan.FromHours(5) - > // "05:00"

TimeSpan.FromHours(-5) - > //「-05:00 "

ありがとうございます!

答えて

3

in the source codeのように、定義済みの設定(DateTimeなど)を使用してフォーマットを変更する方法はありません。

あなたができることはTimeSpanのために新しいJsonConverterを書いて、適切に書式を処理します。 JsonSerializerSettings.Convertersに含めるか、デフォルト設定を変更して使用してください。

0

あなたはDateTimeのインスタンスを取得し、次にようにそれから時間を加算および減算することができます:あなたが必要とする時間を指定するには

System.DateTime timeNow = System.DateTime.Now; 
DateTime futureDateTime = timeNow.Add(new TimeSpan(5, 0, 0)); 
DateTime prevDateTime = timeNow.Add(new TimeSpan(-5, 0, 0)); 

。あなたの文字列形式にそれらを置くためにその後:

futureDateTime.ToString("hh:mm") // 12 hour clock 

バックのDateTimeに文字列値をデシリアライズするには、特定のフォーマットを持つオブジェクト、この記事でDateTimeFormatとIsoDateTimeConverterを指定する例があります: Deserializing dates with dd/mm/yyyy format using Json.Net

+0

です間違っている。このように 'DateTime'をハックしたいのであれば、' .Date'を使わなければなりません。 'DateTime.Now.Date'(別名' DateTime.Today')なので、時刻コンポーネントは空で、 'TimeSpan'が正しく表示されます。さらに、これは24時間未満の値に対してのみ機能し、負でない値に対してのみ機能します.-どのようにして 'DateTime'に負の時間成分を表示したいですか? – kiziu

関連する問題