我正在尝试将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
答案 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();
}
}