c# - 如何将日期时间准确转换为我从客户端获取的输出
问题描述
我有一个变量作为这样的属性:
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);
并得到另一个编译时错误:
无法将类型隐式转换
bool
为System.DateTime?
如何转换nullable datetime
为获取datetime
格式?
解决方案
看到这个
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;
推荐阅读
- symfony-3.4 - Api 平台外键在关系上为空
- android - 两个重叠视图的 Alpha
- video - FFmpeg - 连接视频错误,不匹配相应的输出链接?
- vue.js - 在应用程序创建完成之前触发 Vue 路由器代码?
- android-studio - 我在 Android Studio “Android 资源链接失败”中收到以下错误
- javascript - 获取滚动参数的更好方法?
- java - Java 11 + Chrome/Firefox = TLS 解密错误
- sql - 按 EntryDate 的 MSSQL 总和
- macos - nasm - 无法在 macOS Mojave 上将目标文件与 ld 链接
- android - 错误:android.permission.READ_PHONE_STATE