无法将日期转换为特定格式

时间:2018-08-15 18:58:11

标签: c# datetime

我正在尝试将Date转换为特定格式,在这里我看到了很多目标相同的问题,但是所有建议的解决方案都返回了字符串,我需要返回DateTime以我的自定义格式

这是我的代码:

private DateTime? _matchCalendarDate = DateTime.Now;

public DateTime? MatchCalendarDate
{
   get
   {
      var date = _matchCalendarDate.Value.ToString("dd-MM-yyyy");
      var c = DateTime.ParseExact(date, "dd-MM-yyyy", CultureInfo.InvariantCulture);
      return c;
   }
   set
   {
      _matchCalendarDate = value;
      OnPropertyChanged();
   }
}

此返回:8/15/2018 12:00:00 AM,但应返回15/08/2018

3 个答案:

答案 0 :(得分:1)

返回matchCalendarDate.Date;返回日期部分,时间设置为零

答案 1 :(得分:1)

当您说它返回8/15/2018 12:00:00 AM时,我想您只是在属性上调用ToString(),就像这样:

MatchCalendarDate.ToString();

问题是,DateTime对象没有它自己的固有“格式”。格式就是您想要的格式。

因此,当您实际使用该属性来打印其返回的值时,可以选择所需的显示方式。

类似的东西

MatchCalendarDate.ToString("dd-MM-yyyy");

但是,从本质上讲,这会使属性中的转换变得多余。因此,假设您打算存储DateTime对象,但以您喜欢的格式检索它,那么您应该声明一个第二个字符串属性来为您完成转换。

答案 2 :(得分:0)

您可能必须先考虑转换为原始格式,然后再转换为所需格式

 private  DateTimeDateTime _matchCalendarDate, _matchCalendarD = DateTime.Now;

    public DateTime MatchCalendarDate
    {
       get
       {
          var date = _matchCalendarDate.Value.ToString("dd-MM-yyyy");

          var dt = DateTime.ParseExact(date, "MM/dd/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture);

          var c = dt.ToString("dd/M/yyyy", CultureInfo.InvariantCulture);

          return c;
       }
       set
       {
          _matchCalendarDate = value;
          OnPropertyChanged();
       }
    }