我需要在http URL中传递datetime值,这样服务器就可以根据datetime之后的更改向我发送数据。
我构建的url如下:
public static string AddUrlParams(string api, Dictionary<string, object> parameters)
{
var stringBuilder = new StringBuilder(api);
if (parameters != null && parameters.Count > 0)
{
var hasFirstParam = api.Contains("?");
foreach (var parameter in parameters)
{
var format = hasFirstParam ? "&{0}={1}" : "?{0}={1}";
stringBuilder.AppendFormat(format, Uri.EscapeDataString(parameter.Key),
Uri.EscapeDataString(parameter.Value.ToString()));
hasFirstParam = true;
}
}
return stringBuilder.ToString();
}
其中的一个参数是Datetime。
对于我的一个用户Datetime.Now.ToString()值是09/17/2019 05:05:17 AM (这会导致在服务器端解码url时出现问题),而对于包括我自己在内的所有其他用户,它的值是09/17/2019 05:05:17 AM
为什么它只发生在一个特定的用户身上?
发布于 2019-09-18 14:24:58
正如Jason在评论中提到的:ToString
将根据其运行的计算机上设置的地区设置不同的日期格式。
我的建议是在格式化日期时使用o
格式,这将返回DateTime
的符合ISO8601的字符串表示。DateTime
知道如何在本地解析该格式。
文档:click
为了在你的循环中处理这个问题,你可以这样做:
stringBuilder.AppendFormat(
format,
Uri.EscapeDataString(parameter.Key),
Uri.EscapeDataString(parameter.Value is DateTime
? parameter.Value.ToString("o")
: parameter.Value.ToString()));
https://stackoverflow.com/questions/57983344
复制相似问题