首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >转换为字符串时,Datetime的格式与一个用户的格式不同

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

Stack Overflow用户
提问于 2019-09-18 07:59:58
回答 1查看 36关注 0票数 0

我需要在http URL中传递datetime值,这样服务器就可以根据datetime之后的更改向我发送数据。

我构建的url如下:

代码语言:javascript
代码运行次数:0
运行
复制
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

为什么它只发生在一个特定的用户身上?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-18 14:24:58

正如Jason在评论中提到的:ToString将根据其运行的计算机上设置的地区设置不同的日期格式。

我的建议是在格式化日期时使用o格式,这将返回DateTime的符合ISO8601的字符串表示。DateTime知道如何在本地解析该格式。

文档:click

为了在你的循环中处理这个问题,你可以这样做:

代码语言:javascript
代码运行次数:0
运行
复制
stringBuilder.AppendFormat(
    format,
    Uri.EscapeDataString(parameter.Key),
    Uri.EscapeDataString(parameter.Value is DateTime
        ? parameter.Value.ToString("o")
        : parameter.Value.ToString()));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57983344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档