您可以使用custom serializers/deserializers在全球範圍內控制DateTime值的序列化和反序列化:
在你APPHOST:
using ServiceStack.Text;
JsConfig<DateTime>.SerializeFn = SerializeAsUKDate;
// Also, if you need to support nullable DateTimes:
JsConfig<DateTime?>.SerializeFn = SerializeAsNullableUKDate;
public static string SerializeAsUKDate(DateTime value)
{
// or whatever you prefer to specify the format/culture
return value.ToString("dd/MM/yyyy");
}
public static string SerializeAsNullableUKDate(DateTime? value)
{
return value.HasValue ? SerializeAsUKDate(value.Value) : null;
}
您可能會或可能不會需要指定DeSerializeFn
確保日期正確解析。 ServiceStack.Text日期解串器非常強大。
JsConfig<DateTime>.DeSerializeFn = DeSerializeAsUKDate;
public static DateTime DeSerializeAsUKDate(string value)
{
// date parsing logic here
// ServiceStack.Text.Common.DateTimeSerializer has some helper methods you may want to leverage
}
如果您知道它將如何交付,難道您不能在服務中將其轉換回您所需的格式嗎?此外,請檢查此https://github.com/ServiceStack/ServiceStack.Text/blob/master/tests/ServiceStack.Text.Tests/JsonTests/JsonDateTimeTests.cs – user1477388
它不會工作,因爲我會得到無效的日期,當天超過12美元,因爲它認爲美國日期的月份無效。我可以使用一個字符串,但這會破壞使用綁定的要點。 – Ollie