可能重复:
How to convert UNIX timestamp to DateTime and vice versa?
我有如下的类:
[DataContractAttribute]
public class TestClass
{
[DataMemberAttribute]
public DateTime MyDateTime { get; set; }
}
下面是JSON:
{ "MyDateTime":"1221818565" }
JSON是从PHP PHP服务返回的。
我需要做的是将纪元字符串转换为有效的C# DateTime。做这件事的最好方法是什么?
我可以这样做:
[IgnoreDataMemberAttribute]
public DateTime MyDateTime { get; set; }
[DataMemberAttribute(Name = "MyDateTime")]
public Int32 MyDateTimeTicks
{
get { return this.MyDateTime.Convert(...); }
set { this.Created = new DateTime(...); }
}
但这样做的问题是,MyDateTimeTicks是公共的(将其更改为私有会导致序列化过程中出现异常)
发布于 2008-10-31 00:58:52
完成你发布的内容,并将其设置为私密,对我来说似乎很好。
[DataContract]
public class TestClass
{
private static readonly DateTime unixEpoch = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
[IgnoreDataMember]
public DateTime MyDateTime { get; set; }
[DataMember(Name = "MyDateTime")]
private int MyDateTimeTicks
{
get { return (int)(this.MyDateTime - unixEpoch).TotalSeconds; }
set { this.MyDateTime = unixEpoch.AddSeconds(Convert.ToInt32(value)); }
}
}
发布于 2012-08-10 00:29:54
private DateTime ConvertJsonStringToDateTime(string jsonTime)
{
if (!string.IsNullOrEmpty(jsonTime) && jsonTime.IndexOf("Date") > -1)
{
string milis = jsonTime.Substring(jsonTime.IndexOf("(") + 1);
string sign = milis.IndexOf("+") > -1 ? "+" : "-";
string hours = milis.Substring(milis.IndexOf(sign));
milis = milis.Substring(0, milis.IndexOf(sign));
hours = hours.Substring(0, hours.IndexOf(")"));
return new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc).AddMilliseconds(Convert.ToInt64(milis)).AddHours(Convert.ToInt64(hours) / 100);
}
return DateTime.Now;
}
发布于 2008-10-30 21:13:20
这是我想出来的。在C#中,看起来您需要创建一个新的DateTime,并将纪元值'seconds‘添加到此DateTime中。下面是它在代码中的样子:
new System.DateTime(1970, 1, 1, 0, 0, 0, 0).AddSeconds(1221818565);
在使用Visual Studio即时窗口时,我将此操作的结果打印到调试器控制台:
{9/19/2008 10:02:45 AM}
Date: {9/19/2008 12:00:00 AM}
Day: 19
DayOfWeek: Friday
DayOfYear: 263
Hour: 10
Kind: Unspecified
Millisecond: 0
Minute: 2
Month: 9
Second: 45
Ticks: 633574153650000000
TimeOfDay: {10:02:45}
Year: 2008
https://stackoverflow.com/questions/249721
复制相似问题