首页 > 解决方案 > 如何将日期时间准确转换为我从客户端获取的输出

问题描述

我有一个变量作为这样的属性:

DateTime? something;
something  = Convert.ToDateTime(d1);

在哪里d1 = '04/20/2020 12:50 PM';

我收到运行时错误:

字符串未被识别为有效datetime

然后我尝试了这段代码:

something  = DateTime.TryParseExact(d1, "MM/dd/yyyy HH:mm tt", null);

并得到一个编译时错误:

方法“TryParseExact”没有重载需要 3 个参数

然后我也尝试像下面那样转换它

something  = DateTime.TryParseExact(d1, "MM/dd/yyyy HH:mm tt", CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime dt);

并得到另一个编译时错误:

无法将类型隐式转换boolSystem.DateTime?

如何转换nullable datetime为获取datetime格式?

在此处输入图像描述

标签: c#

解决方案


看到这个

public static bool TryParseExact (string s, string format, IFormatProvider provider, System.Globalization.DateTimeStyles style, out DateTime result);

参数

s String 包含要转换的日期和时间的字符串。

format String s 所需的格式。

provider IFormatProvider 提供关于 s 的文化特定格式信息的对象。

style DateTimeStyles 一个或多个枚举值的按位组合,指示 s 的允许格式。

结果 DateTime 当此方法返回时,如果转换成功,则包含与 s 中包含的日期和时间等效的 DateTime 值,如果转换失败,则包含 MinValue。如果 s 或 format 参数为 null、为空字符串或不包含与 format 中指定的模式相对应的日期和时间,则转换失败。此参数未初始化传递。

如果 s 转换成功,则返回布尔值 true;否则为假。

异常 ArgumentException 样式不是有效的 DateTimeStyles 值。

-或者-

样式包含 DateTimeStyles 值的无效组合(例如,AssumeLocal 和 AssumeUniversal)。

所以我们需要检查成功或失败,并进行处理。

DateTime? something;
if(DateTime.TryParseExact(d1, "MM/dd/yyyy HH:mm tt", CultureInfo.InvariantCulture, DateTimeStyles.None, out DateTime dt))
    something = dt;
else
    something = null;

推荐阅读