c#:获取存储在日期对象中的时区偏移量
c#: Get timezone offset stored in date object
我从 API 回复中得到一个日期:
string jsonResponse = @"{'endDate': '/Date(-62135578800000-0500)/'}";
现在,当我使用 NewtonSoft.json 反序列化响应时,我得到的结果是:
MyClass obj = JsonConvert.DeserializeObject<MyClass>(jsonResponse);
Console.WriteLine(obj.endDate); // 1/1/0001 5:00:00 AM
现在再次经过一些操作后,我必须 post 以我收到的日期相同的格式将数据发送到服务器:
DateTime endDateValue = new DateTime();
endDateValue = obj.endDate
MyClass objNew = new MyClass{
endDate = endDateValue
};
string jsonPostData = JsonConvert.SerializeObject(objNew);
string response = JsonConvert.SerializeObject(jsonPostData);
Console.WriteLine(response);//{"endDate":"0001-01-01T05:00:00+00:00"}
因为我不想要这种格式"0001-01-01T05:00:00+00:00"
。它应该与 '/Date(-62135578800000-0500)/'
.
相同
直到现在我都按照这个 link 来理解格式的类型:
PHP date format /Date(1365004652303-0500)/
我可以这样得到时间戳:
DateTime unixStart = new DateTime(1970, 1, 1, 0, 0, 0, 0, System.DateTimeKind.Utc);
long unixTimeStampInTicks = (endDateValue.ToUniversalTime() - unixStart).Ticks;
Console.WriteLine(unixTimeStampInTicks/10000);//-62135578800000
c#
中是否有任何方法可以像 javascript getTimezoneOffset()
方法中那样获取此日期对象中存在的偏移值 -0500
returns 偏移量.
只需使用 DateTimeOffset
, not DateTime
- 这是一个类似的结构,只是带有显式的 Offset
属性。 Plain DateTime
没有时区的概念。
这意味着在 MyClass
中使用它并反序列化它。
我从 API 回复中得到一个日期:
string jsonResponse = @"{'endDate': '/Date(-62135578800000-0500)/'}";
现在,当我使用 NewtonSoft.json 反序列化响应时,我得到的结果是:
MyClass obj = JsonConvert.DeserializeObject<MyClass>(jsonResponse);
Console.WriteLine(obj.endDate); // 1/1/0001 5:00:00 AM
现在再次经过一些操作后,我必须 post 以我收到的日期相同的格式将数据发送到服务器:
DateTime endDateValue = new DateTime();
endDateValue = obj.endDate
MyClass objNew = new MyClass{
endDate = endDateValue
};
string jsonPostData = JsonConvert.SerializeObject(objNew);
string response = JsonConvert.SerializeObject(jsonPostData);
Console.WriteLine(response);//{"endDate":"0001-01-01T05:00:00+00:00"}
因为我不想要这种格式"0001-01-01T05:00:00+00:00"
。它应该与 '/Date(-62135578800000-0500)/'
.
直到现在我都按照这个 link 来理解格式的类型: PHP date format /Date(1365004652303-0500)/
我可以这样得到时间戳:
DateTime unixStart = new DateTime(1970, 1, 1, 0, 0, 0, 0, System.DateTimeKind.Utc);
long unixTimeStampInTicks = (endDateValue.ToUniversalTime() - unixStart).Ticks;
Console.WriteLine(unixTimeStampInTicks/10000);//-62135578800000
c#
中是否有任何方法可以像 javascript getTimezoneOffset()
方法中那样获取此日期对象中存在的偏移值 -0500
returns 偏移量.
只需使用 DateTimeOffset
, not DateTime
- 这是一个类似的结构,只是带有显式的 Offset
属性。 Plain DateTime
没有时区的概念。
这意味着在 MyClass
中使用它并反序列化它。