只是为了扩展tdelepine的代码片段,这里是我使用的代码:
在我的 WCF JSON 服务中,我有一个(可为空的)DateTime 值,并希望我的服务以更易读的格式返回日期,以便我的 iPhone 应用程序能够解释它。
这是我的 JSON 在应用一些更改后的样子:
请注意该UpdateDateOriginal
字段,这是 WCF 编写 DateTimes 的默认方式,以及UpdateDate
我使用下面的代码创建的更友好的字段。
我原来的线条是这样的:
[DataMember]
public DateTime? UpdateDateOriginal { get; set; }
...这里是创建新的更友好的UpdateDate
JSON 值的行。
[IgnoreDataMember]
public DateTime? UpdateDate { get; set; }
[DataMember(Name = "UpdateDate")]
private string UpdateDateString { get; set; }
[OnSerializing]
void OnSerializing(StreamingContext context)
{
if (this.UpdateDate == null)
this.UpdateDateString = "";
else
this.UpdateDateString = this.UpdateDate.Value.ToString("MMM/dd/yyyy HH:mm", CultureInfo.InvariantCulture);
}
[OnDeserialized]
void OnDeserializing(StreamingContext context)
{
if (this.UpdateDateString == null)
this.UpdateDate = null;
else
this.UpdateDate = DateTime.ParseExact(this.UpdateDateString, "MMM/dd/yyyy HH:mm", CultureInfo.InvariantCulture);
}
DateTime
实际上,您可能会发现以 ISO8601 格式返回值更有用。例如:
UpdateTime: "2014-08-24T13:02:32",
为此,只需使用我上面的代码,但在两个地方都 将字符串"MMM/dd/yyyy HH:mm"
更改为。"s"
而且,如果您的 DateTime 值存储在 UTC 中,但您希望 WCF 服务返回用户本地时区中的值,您可以在此处遵循我的提示:
获取用户本地时区的 DateTime
生活不是更简单,举几个简单的例子!