我正在尝试从字符串中删除时区。
字符串如下所示。
2/05/2018 6:54:00 AM
此数据已从本地数据库中检索。
代码部分:
string datCommisioned = (rdr.GetValue(4).ToString());
string dateonly = datCommisioned.ToString("dd/MM/yyyy");
当我尝试执行上述编码时,它会收到错误,
无法转换为' string'到' System.IFormatProvider'
知道如何捕捉除时间之外的日期部分吗?谢谢!
编辑:这可能不是一个重复的问题,因为我在发布之前提到了其他问题。此问题的上下文不同,因为提取的字符串不被识别为有效的DateTime(由用户手动输入),因此无法使用DateTime类。
答案 0 :(得分:2)
//Assuming value at index 4 is a DateTime.
string datCommisioned = rdr.GetDateTime(4).ToString(@"dd/MM/yyyy");
在DataReader中使用更具体和强类型的方法是一种很好的做法。帮助更快地识别错误。
答案 1 :(得分:1)
有几种方法
使用DateTime
对象。
DateTime dateTime = DateTime.Parse(datCommissioned);
string dateonly = dateTime.ToString("dd/MM/yyyy");
在空格上拆分
var split = datCommissioned.Split(' ');
string dateonly = split[0];
答案 2 :(得分:0)
您只需将其更改为此即可。
var datCommisioned = DateTime.parse(rdr.GetValue(4)).ToString("dd/MM/yyyy");
您当前正在将其转换为字符串,然后尝试使用ToString()字符串,只需要从读者那里获取toString()日期。
答案 3 :(得分:0)
这里只是另一种方法;您可以使用DateTime.Parse()或者更安全的替代方法DateTime.TryParse()将字符串转换为DateTime对象。然后,使用DateTime对象的Date属性基本上将时间设置为午夜,即。 00:00:00。根据您使用日期的内容,使用DateTime对象而不是字符串可能会有所帮助。然后,您可以调用ToString(“d”)或使用其他格式化程序为您提供所需格式的仅日期部分。
if (TryParse(datCommissioned, out DateTime commissionedDate))
{
commisionedDate = commisionedDate.Date;
string commissionedDateText = commissionedDate.ToString(“dd/MM/yyyy”);
}