gpt4 book ai didi

Javascript 日期到 C# Web 服务错误

转载 作者:行者123 更新时间:2023-11-29 19:23:29 24 4
gpt4 key购买 nike

我一直在尝试将 javascript 日期转换为要插入到 Microsoft sql 数据库中的 c# 日期时间格式。

这是我目前拥有的代码:

Javascript 端:

var now     = new Date();
now = now.toUTCString();

C# 端:

//time variable is in DateTime Format

Console.WriteLine("Before: "+time);
String timeString = Convert.ToString(time);

Console.WriteLine("Convert: "+timeString);

DateTime newDT = DateTime.ParseExact(timeString, "yyyy-MM-dd HH:mm:ss:FFF", CultureInfo.InvariantCulture);

Console.WriteLine("After: "+newDT);

错误信息:

System.FormatException: String was not recognized as a valid DateTime.
at System.DateTimeParse.ParseExact(String s, String format, DateTimeFormatInfo dtfi, DateTimeStyles style)
at -classfile&method name omiited-(DateTime time)

调试信息:

 Before: 17/8/2015 11:43:48 AM
Convert: 17/8/2015 11:43:48 AM

我很确定 ParseExact 中的“timeString”是错误的。

关于如何解决这个问题的任何想法?我想要的结果格式为: 2015-07-27 14:24:23.853 。谢谢!

最佳答案

Date 对象上的toUTCString 函数返回 RFC2822 格式的值,例如 "Mon, 17 Aug 2015 05:25:53 GMT"。这与您在 C# 代码中指定的 "yyyy-MM-dd HH:mm:ss:FFF" 格式不一致。

您有两个选择。我推荐第二个。

  1. 更改 C# 代码以匹配传递的格式。 "r" 标准格式匹配 RFC2822。

    string s = "Mon, 17 Aug 2015 05:25:53 GMT";
    DateTime dt = DateTime.ParseExact(s, "r", CultureInfo.InvariantCulture,
    DateTimeStyles.AssumeUniversal | DateTimeStyles.AdjustToUniversal);
  2. 两边都使用更清晰的格式。对于大多数情况,我建议使用 ISO8601 格式。在 JavaScript 中,使用 toISOString 方法获取类似于 "2015-08-17T05:25:43.780Z" 的日期。然后将您的 C# 代码更改为:

    var s = "2015-08-17T05:25:43.780Z";
    DateTime dt = DateTime.ParseExact(s, "yyyy-MM-dd'T'HH:mm:ss.FFFZ",
    CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind);

关于Javascript 日期到 C# Web 服务错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32042554/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com