【问题标题】:How to format string to datetime?如何将字符串格式化为日期时间?
【发布时间】:2014-08-28 09:51:57
【问题描述】:

我有 devexpress dateedit 对象,我将选定的日期从客户端发送到控制器,但我无法将我的字符串日期值转换为日期时间值

当我尝试时,我得到了这个错误 => string was not recognized as a valid DateTime

我的字符串日期值 => Thu Aug 28 2014 00:00:00 GMT+0300 (Turkey Daylight Time)

转换代码 =>

DateTime startDate = DateTime.ParseExact(sDate, "ddd MMM d yyyy HH:mm:ss zzzz", CultureInfo.InvariantCulture);

我应该如何格式化这个字符串?

【问题讨论】:

  • 首先:zzzz - 没有带有 4 'z' 的格式说明符。第二,你确定28d格式吗?

标签: c# javascript string datetime datetime-format


【解决方案1】:

您需要用单引号“转义”无法识别的符号:

var sDate =  "Thu Aug 28 2014 00:00:00 GMT+0300 (Turkey Daylight Time)";
var format = "ddd MMM dd yyyy HH:mm:ss 'GMT'zzzz '(Turkey Daylight Time)'";

DateTime startDate = DateTime.ParseExact(sDate, format, CultureInfo.InvariantCulture);

Console.WriteLine(startDate);

打印:

8/28/2014 12:00:00 AM

与第三组中的单个d 配合良好,为了清楚起见添加了一个。

单引号或双引号表示文字字符串分隔符。您可以在msdn article on DateTime formats

阅读和查看更多示例

【讨论】:

    【解决方案2】:

    首先将日期字符串转换为日期,然后将日期转换为 ISO 并将其发送到服务器。那会奏效。

    var date = new Date("Thu Aug 28 2014 00:00:00 GMT+0300")
    var sDate = date.toISOString();
    

    【讨论】:

    • 仔细阅读问题。@Eren 尝试将字符串值转换为日期时间。
    • @user3217843,我正在将客户端(javascript)的值转换为可以在服务器端解析的格式。即使您不需要服务器上的字符串,您也可以将 sDate 设置为 DateTime,在这种情况下它将自动分配。
    【解决方案3】:

    先尝试使用正则表达式删除未知格式。

    var sDate = @"Thu Aug 28 2014 00:00:00 GMT+0300 (Turkey Daylight Time)";
    var sDateOnly = Regex.Replace(sDate, @"\s*(\(.*\))", m => string.Empty);
    var f = @"ddd MMM d yyyy HH:mm:ss \G\M\Tzzzz";
    DateTime startDate = DateTime.ParseExact(sDateOnly, f, CultureInfo.InvariantCulture);
    

    【讨论】:

      猜你喜欢
      • 2012-09-07
      • 1970-01-01
      • 2020-08-07
      • 1970-01-01
      • 2017-08-21
      • 2018-05-17
      • 2011-06-28
      • 1970-01-01
      相关资源
      最近更新 更多