只是为了扩展特德勒平的代码片段,这里是我使用的代码:
在我的 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"
to "s"
在这两个地方。
而且,如果您的 DateTime 值以 UTC 格式存储,但您希望 WCF 服务返回用户本地时区的值,您可以按照我的提示进行操作:
获取用户本地时区的日期时间 https://stackoverflow.com/a/30503614/391605
通过一些简单的例子,生活不是更容易吗!