从字符串c#中删除时间部分

时间:2018-05-02 00:50:31

标签: c#

我正在尝试从字符串中删除时区。

字符串如下所示。

  

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类。

4 个答案:

答案 0 :(得分:2)

//Assuming value at index 4 is a DateTime.
string datCommisioned = rdr.GetDateTime(4).ToString(@"dd/MM/yyyy");

在DataReader中使用更具体和强类型的方法是一种很好的做法。帮助更快地识别错误。

答案 1 :(得分:1)

有几种方法

  1. 使用DateTime对象。

    DateTime dateTime = DateTime.Parse(datCommissioned);
    string dateonly = dateTime.ToString("dd/MM/yyyy");
    
  2. 在空格上拆分

    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”);
}