相关疑难解决方法(0)

"正确"的JSON日期格式

我已经看到了许多不同的JSON日期格式标准:

"\"\\/Date(1335205592410)\\/\""         .NET JavaScriptSerializer
"\"\\/Date(1335205592410-0500)\\/\""    .NET DataContractJsonSerializer
"2012-04-23T18:25:43.511Z"              JavaScript built-in JSON object
"2012-04-21T18:25:43-05:00"             ISO 8601
Run Code Online (Sandbox Code Playgroud)

哪一个是正确的?还是最好的?这有什么标准吗?

javascript json

1071
推荐指数
9
解决办法
97万
查看次数

将.NET DateTime转换为JSON

可能重复:
如何格式化JSON日期?

我的网站服务正在将一个DateTime返回给jQuery调用.该服务以以下格式返回数据:

/Date(1245398693390)/
Run Code Online (Sandbox Code Playgroud)

如何将其转换为适合JavaScript的日期?

javascript datetime json

236
推荐指数
9
解决办法
20万
查看次数

Javascript日期对象总是休息一天吗?

在我的Java Script应用程序中,我将日期存储为如下格式:

2011-09-24
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试使用上面的值来创建一个新的Date对象(所以我可以以不同的格式检索日期)时,日期总会在一天后返回.见下文:

var doo = new Date("2011-09-24");
console.log(doo);
Run Code Online (Sandbox Code Playgroud)

日志:

Fri Sep 23 2011 20:00:00 GMT-0400 (Eastern Daylight Time)
Run Code Online (Sandbox Code Playgroud)

javascript date

205
推荐指数
13
解决办法
15万
查看次数

如何解析JSON以在JavaScript中接收Date对象?

我有一段JSON:

\/Date(1293034567877)\/
Run Code Online (Sandbox Code Playgroud)

这是.NET代码的结果:

var obj = DateTime.Now;
var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
serializer.Serialize(obj).Dump();
Run Code Online (Sandbox Code Playgroud)

现在我面临的问题是如何在JavaScript中创建一个Date对象.我所能找到的是令人难以置信的正则表达式解决方案(许多包含错误).

很难相信没有优雅的解决方案,因为这完全在JavaScrip中,我的意思是JavaScript代码试图读取JSON(JavaScript Object Notation),这应该是一个JavaScript代码,而且此时它证明它不是因为JavaScript不能在这做得很好

我也看到了一些我无法工作的eval解决方案(除了被指出为安全威胁).

难道没有办法优雅地做到这一点吗?

类似的问题没有真正的答案:
如何使用GWT解析ASP.NET JSON日期格式

javascript datetime json

106
推荐指数
6
解决办法
20万
查看次数

将json结果转换为日期

可能重复:
如何格式化JSON日期?

我从JavaScript的$ getJSON调用得到以下结果.如何在JavaScript中将start属性转换为正确的日期?

[{"id":1,"start":"/ Date(1238540400000)/"},{"id":2,"start":"/ Date(1238626800000)/"}]

谢谢!

javascript json

79
推荐指数
4
解决办法
17万
查看次数

如何使用JSON.NET通过ASP.NET MVC传递JSON日期值?

可能重复:
格式化Microsoft JSON日期?

ASP.NET函数Json()格式化并返回日期为

{"d":"\/Date(1240718400000)\/"}
Run Code Online (Sandbox Code Playgroud)

必须在客户端处理这是有问题的.您对来回发送日期值的方法有何建议?

javascript asp.net-mvc datetime json json.net

36
推荐指数
5
解决办法
3万
查看次数

DateTime的自定义JavaScriptConverter?

我有一个对象,它有一个DateTime属性...我想通过AJAX/JSON将该对象从.ashx处理程序传递回网页...我不想使用第三方控件...

当我这样做:

  new JavaScriptSerializer().Serialize(DateTime.Now);
Run Code Online (Sandbox Code Playgroud)

我明白了:

  "\/Date(1251385232334)\/"
Run Code Online (Sandbox Code Playgroud)

但我想要"8/26/2009"(没关系本地化......我的应用程序是非常本地化的,所以我的日期格式化假设在这个问题中没有争议).如果我制作/注册自定义转换器

public class DateTimeConverter : JavaScriptConverter
{
    public override IEnumerable<Type> SupportedTypes
    {
        get { return new List<Type>() { typeof(DateTime), typeof(DateTime?) }; }
    }

    public override IDictionary<string, object> Serialize(object obj, JavaScriptSerializer serializer)
    {
        Dictionary<string, object> result = new Dictionary<string, object>();
        if (obj == null) return result;
        result["DateTime"] = ((DateTime)obj).ToShortDateString();
        return result;
    }

    public override object Deserialize(IDictionary<string, object> dictionary, Type type, JavaScriptSerializer serializer)
    {
        if (dictionary.ContainsKey("DateTime"))
            return new DateTime(long.Parse(dictionary["DateTime"].ToString()), DateTimeKind.Unspecified);
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我得到这个结果(因为自定义序列化方法的返回值是一个字典):

{"DateTime":"8/27/2009"} …
Run Code Online (Sandbox Code Playgroud)

.net javascript ajax converter

27
推荐指数
3
解决办法
2万
查看次数

Angular.js格式来自json对象

我的json响应看起来像这样:

[{"Id":"dab4580b-e24d-49f8-9fd5-2e968b10d3b5","Title":"MVVM-Sidekick ??","CreatedOn":"\/Date(1390272893353)\/","IsChecked":false},{"Id":"66a0f134-e240-4cc4-96fa-ac3807853ca7","Title":"Windows Phone ????","CreatedOn":"\/Date(1390018447080)\/","IsChecked":false}]
Run Code Online (Sandbox Code Playgroud)

"CreatedOn"日期采用以下格式:'/ Date(1390272893353)/'

当我将此结果绑定到html表时,日期无法格式化:

<td>{{item.CreatedOn | date: 'yyyy-MM-dd HH:mm'}}</td>
Run Code Online (Sandbox Code Playgroud)

仍然给我:

/日期(1390272893353)/

我不想更改服务器端的任何代码(不要修改json字符串),格式化这个日期的最佳方法是什么?

javascript format json date angularjs

22
推荐指数
4
解决办法
4万
查看次数

如何从json中获取Date对象在typescript中的响应

这是我的json:

{
  "data": [
    {
      "comment": "3541",
      "datetime": "2016-01-01"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

这是模型:

export class Job {
    constructor(comment:string, datetime:Date) {
        this.comment = comment;
        this.datetime = datetime;
    }

    comment:string;
    datetime:Date;
}
Run Code Online (Sandbox Code Playgroud)

查询:

getJobs() {
        return this._http.get(jobsUrl)
            .map((response:Response) => <Job[]>response.json().data)
}
Run Code Online (Sandbox Code Playgroud)

问题是在铸造之后Job[]我期待datetime属性Date但是它是字符串.它不应该转换为Date对象吗?我在这里失踪了什么?

json typescript angular

21
推荐指数
2
解决办法
3万
查看次数

如何处理从WCF数据服务(OData)返回的json DateTime

我相信我在这里遗漏了一些明显的东西.当我从OData服务请求JSON响应时,我得到的DateTime属性的结果与我请求XML时的结果不同.我将使用NerdDinner OData feed作为示例.

JSON:

http://www.nerddinner.com/Services/OData.svc/Dinners(1)?$format=json
"EventDate": "\/Date(1235764800000)\/"
Run Code Online (Sandbox Code Playgroud)

XML:

http://www.nerddinner.com/Services/OData.svc/Dinners(1)
<d:EventDate m:type="Edm.DateTime">2009-02-27T20:00:00</d:EventDate>
Run Code Online (Sandbox Code Playgroud)

当我做警报(新日期(1235764800000))时,我得到这个结果: 替代文字

当我使用LINQPad运行相同的查询时,我也得到了8PM的结果.为什么JSON结果中的时区不正确?似乎假设响应是GMT.我应该在客户端上处理这个(通过javascript)还是我可以在服务器上设置的东西?

我在客户端上使用jQuery,在服务器上使用WCF数据服务(和实体框架).

更新:

我在客户端使用Datejs来处理UTC日期时间格式.我想知道这是否是解决这个问题的正确方法.

 function getDateString(jsonDate) {
     if (jsonDate == undefined) {
         return "";
     }
     var utcTime = parseInt(jsonDate.substr(6));

     var date = new Date(utcTime);
     var minutesOffset = date.getTimezoneOffset();

     return date.addMinutes(minutesOffset).toString("M/d/yyyy h:mm tt");
 }
Run Code Online (Sandbox Code Playgroud)

wcf json wcf-data-services odata

20
推荐指数
3
解决办法
4万
查看次数