2

如果我运行以下命令:

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

我得到了类似 2012 年 10 月 14 日这样的东西,这很好,但是如果我将它放入 WinJS.xhr 的 url 中,它会将其更改为 ?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 datetime 一切正常。

我错过了某个地方的设置吗?我还尝试将 url 的编码更改为不同的格式,但没有成功。

4

2 回答 2

1

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

于 2013-03-23T04:52:03.817 回答
0

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

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

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

于 2012-10-05T16:14:47.397 回答