日期时间格式.NETC#

日期时间格式.NETC#,.net,datetime,.net,Datetime,我收到以下格式的日期和时间: \/Date(1434013505757-0700)\/ 我就是找不到一种方法将它重新格式化为人类可读的格式 提前感谢您,这是(最佳猜测),具有毫秒分辨率和时区偏移 有关如何在两者之间转换的信息,请参见。请记住,该示例是基于“秒”分辨率的,而您的示例是基于“毫秒”分辨率的。所以使用add毫秒 1434013505757-0700 |<--------->| |--| Unix TimeZone TimeStamp Off

我收到以下格式的日期和时间:

\/Date(1434013505757-0700)\/
我就是找不到一种方法将它重新格式化为人类可读的格式

提前感谢您,

这是(最佳猜测),具有毫秒分辨率和时区偏移

有关如何在两者之间转换的信息,请参见。请记住,该示例是基于“秒”分辨率的,而您的示例是基于“毫秒”分辨率的。所以使用add毫秒

1434013505757-0700
|<--------->| |--|
 Unix          TimeZone 
 TimeStamp     Offset   
1434013505757-0700
|| |--|
Unix时区
时间戳偏移量

希望你能自己找出代码。请注意,时区偏移以小时为单位。仅供参考Unix时间戳定义为自1970年1月1日格林威治午夜以来经过的秒数(或毫秒)。

您看到的是由Unix生成的Micoroft日期格式

以下示例从示例中输出当前日期,然后输出日期时间:

var ser = new DataContractJsonSerializer(typeof(Example));
var ex = new Example{ MSDate = DateTime.Now};

// write Example to the stream
var ms = new MemoryStream();
ser.WriteObject(ms, ex);

var cnt = Encoding.UTF8.GetString(ms.ToArray());
Debug.WriteLine(cnt);  // show wireformat
            
ms.Position = 0;
var exdes = (Example)ser.ReadObject(ms); // read back

// create our own json stream and deserialize
var somejsonwithdate = @"{""MSDate"":""\/Date(1434013505757-0700)\/""}";

var yourdate = (Example) ser.ReadObject(
        new MemoryStream(Encoding.UTF8.GetBytes(somejsonwithdate)));

Debug.WriteLine("{0:yyyy-MM-dd h:mm:ss", yourdate.MSDate);
这是DTO类型

public class Example
{
    public DateTime MSDate { get; set; }
}
此代码在我的调试输出中输出:

{“MSDate”:“/日期(1435128933854+0200)/”}
2015-06-11 11:05:05

来自MSDN文章

DateTime值以“/Date(700000+0500)/”的形式显示为JSON字符串,其中第一个数字(提供的示例中为700000)是GMT时区的毫秒数,即自1970年1月1日午夜起的常规(非夏令时)时间。该数字可能为负数,以表示较早的时间。示例中由“+0500”组成的部分是可选的,指示时间是本地类型的-也就是说,应在反序列化时转换为本地时区。如果不存在,则将时间反序列化为Utc。忽略实际数字(本例中为“0500”)及其符号(+或-)

ASP.NET AJAX客户端JavaScript代码自动将此类字符串转换为JavaScript日期时间实例。如果有其他具有类似形式的字符串在.NET中不是DateTime类型,那么它们也会被转换

转换仅在转义“/”字符时发生(即JSON看起来像“/Date(700000+0500)/”),因此WCF的JSON编码器(由WebHttpBinding启用)总是转义“/”字符


试着描述一下这是什么格式。年、日、月在哪里…您知道该值表示的日期/时间吗?如果是,请与我们分享这些信息。如果没有,你将如何评估任何答案是否正确?作为一般规则,程序员有责任知道其程序输入的源和格式。因此,您有责任了解格式。数据必须来自某个地方或某个组织。您需要遍历组织树直至数据源。根据我的经验,询问通常会有所帮助。对于我们来说,我们可以推测一下。这是一种古老的DataContractSerializer格式,从早期的AJAX时代开始,那时Json中没有日期的概念,所以微软决定输出一个转义的UNIX时间戳,这样就不会与文本或数字混淆。真正的解决方案是替换DataContractSerializer—日期格式只是其问题之一。NET MVC、Web API和所有其他REST服务都使用ISO日期格式。否则,您必须将字符串解析为实际日期这解释了数字,请参见
日期的位置(
和额外的斜杠来自。您是正确的,但也要记住时区偏移是额外的数据。时间戳是基于UTC的,无论显示的偏移量是什么。这与其他格式略有不同,例如ISO8601,其中显示的时间已由该偏移量调整。在这里,它没有。