DateTimeFormatter

时间:2012-10-05 13:33:58

标签: windows-8 globalization winjs

如果我运行以下内容:

var newdate = new Date();
var dt = new Windows.Globalization.DateTimeFormatting.DateTimeFormatter("shortdate");
var date = dt.format(newdate);

我回到这样的事情10/14/2012这很好,但如果我把它扔进WinJS.xhr的网址,它会改为?10?/?4?/?2012

服务电话的示例代码

var urlAddress ="http://www.communitymegaphone.com/ws/CMEventDS.svc/GetEventsByDistance?Lat='" + mapCenter.latitude + "'&Lon='" + mapCenter.longitude + "'&Dist=" + eventsByDistance + "&$filter=(starttime%20gt%20datetime'" + date  + "')&$orderby=starttime%20asc&$format=json";

WinJS.xhr({
        type: "GET",
        url: urlAddress
    }).then(processSuccess, processError);

如果我使用普通的旧javascript日期时间,一切正常。

我错过了某个地方的设置吗?我也尝试将网址的编码更改为不同的格式而没有运气。

2 个答案:

答案 0 :(得分:1)

DateTimeFormatter专门用于面向用户。创建网址时,您不再是面向用户,而是面向后端。您需要使用标准日期格式(如iso 8601),而不是根据用户语言调整的日期格式。由问号标识的字符是从左到右和从右到左的标记,即使在嵌入的内容中也能确保字符串正确显示。

答案 1 :(得分:0)

当您构建这样的URL时,日期需要表示为字符串。

我不确定为什么格式化程序没有返回正确的字符串,但这样的事情有时表明输入和输出之间的编码不匹配。

我会说坚持使用JavaScript datetime可能就是这里的方法,除非你因某些特定原因确实需要DateTimeFormatter。