Possible Duplicate:
How to convert UNIX timestamp to DateTime and vice versa?
I've got the following class:
[DataContractAttribute]
public class TestClass
{
[DataMemberAttribute]
public DateTime MyDateTime { get; set; }
}
Here's the JSON:
{ "MyDateTime":"1221818565" }
The JSON is being returned from a PHP webservice.
What I need to do, is convert that epoch string into a valid C# DateTime. What's the best way of doing this?
I can do this:
[IgnoreDataMemberAttribute]
public DateTime MyDateTime { get; set; }
[DataMemberAttribute(Name = "MyDateTime")]
public Int32 MyDateTimeTicks
{
get { return this.MyDateTime.Convert(...); }
set { this.Created = new DateTime(...); }
}
But the trouble with this is, the MyDateTimeTicks is public (changing it to private causes an exception in the serialization process)
Here's what I've come up with. In C#, it looks like you need to create a new DateTime and add the epoch value as 'seconds' to this DateTime. Here's what it looks like in code:
When using the Visual Studio immediate window, I printed the result of this operation to the debugger console:
Finishing what you posted, AND making it private seemed to work fine for me.
I know your question was for PHP, but I just wanted to note a "gotcha" for .NET JSON: it appears that .NET gives you the date in "milliseconds since epoch" (as opposed to seconds). In this case, the AddSeconds line should be:
unixEpoch.AddMilliseconds(Int64.Parse(date));
More info: http://blogs.msdn.com/b/marcelolr/archive/2008/03/05/system-datetime-ticks-vs-json-date.aspx
What you want is the following:
where
ticks
is the value passed to you by PHP.