转换为字符串时,Datetime的格式仅与一个用户不同

转换为字符串时,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 &

我需要在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();
    }
公共静态字符串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所说的几乎就是原因!有可能在单个设备上随机更改区域设置吗?因为从我的用户日志中,我在两个不同的时间看到不同的时间格式