转换为字符串时,Datetime的格式仅与一个用户不同
我需要在http URL中传递datetime值,以便服务器可以根据datetime之后的更改向我发送数据 我正在构建url,如下所示:转换为字符串时,Datetime的格式仅与一个用户不同,datetime,xamarin.forms,escaping,Datetime,Xamarin.forms,Escaping,我需要在http URL中传递datetime值,以便服务器可以根据datetime之后的更改向我发送数据 我正在构建url,如下所示: public static string AddUrlParams(string api, Dictionary<string, object> parameters) { var stringBuilder = new StringBuilder(api); if (parameters != null &
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();
}
公共静态字符串AddUrlParams(字符串api、字典参数)
{
var stringBuilder=新的stringBuilder(api);
if(parameters!=null&¶meters.Count>0)
{
var hasFirstParam=api.Contains(“?”);
foreach(参数中的var参数)
{
var format=hasFirstParam?&{0}={1}”:“{0}={1}”;
stringBuilder.AppendFormat(格式,Uri.EscapeDataString(parameter.Key),
EscapeDataString(parameter.Value.ToString());
hasFirstParam=true;
}
}
返回stringBuilder.ToString();
}
其中一个参数是Datetime
对于我的一个用户Datetime.Now.ToString()的值是2019年9月17日05:05:17上午(这会在服务器端解码url时造成问题),而对于包括我在内的所有其他用户,它的值是2019年9月17日05:05:17上午
为什么只有一个特定的用户会发生这种情况?如注释中所述:ToString
将根据运行的计算机上设置的区域设置,对日期进行不同的格式设置
我建议在格式化日期时使用o
格式,该格式将返回符合ISO8601标准的DateTime
字符串表示形式DateTime
知道如何本机解析该格式
文件:
要在循环中处理此问题,可以执行以下操作:
stringBuilder.AppendFormat(
format,
Uri.EscapeDataString(parameter.Key),
Uri.EscapeDataString(parameter.Value is DateTime
? parameter.Value.ToString("o")
: parameter.Value.ToString()));
一个用户的语言环境设置不同,或者他们的设备很奇怪。在这两种情况下,您都不应该依赖默认的ToString(),因为它会因区域设置而有所不同。提供一个格式字符串,以便日期始终采用一致的格式。我正在修改代码以使其一致,但我很想知道原因。如果你问我,Jason所说的几乎就是原因!有可能在单个设备上随机更改区域设置吗?因为从我的用户日志中,我在两个不同的时间看到不同的时间格式