如果我运行以下内容:
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日期时间,一切正常。
我错过了某个地方的设置吗?我也尝试将网址的编码更改为不同的格式而没有运气。
答案 0 :(得分:1)
DateTimeFormatter专门用于面向用户。创建网址时,您不再是面向用户,而是面向后端。您需要使用标准日期格式(如iso 8601),而不是根据用户语言调整的日期格式。由问号标识的字符是从左到右和从右到左的标记,即使在嵌入的内容中也能确保字符串正确显示。
答案 1 :(得分:0)
当您构建这样的URL时,日期需要表示为字符串。
我不确定为什么格式化程序没有返回正确的字符串,但这样的事情有时表明输入和输出之间的编码不匹配。
我会说坚持使用JavaScript datetime可能就是这里的方法,除非你因某些特定原因确实需要DateTimeFormatter。