在TimeSpan中转换DateTime?

时间:2016-04-30 10:46:49

标签: c# datetime

我有一个与GCalendar互动的Google Calendar API班级:

public class GEvent
{
    public DateTime StartDate { get; set; }
    public TimeSpan StartTime { get; set; }
    public DateTime EndDate { get; set; }
    public TimeSpan EndTime { get; set; }
}

如何看待有两个属性StartTimeEndTime同时为TimeSpan

现在我已经创建了一个实例化这个类的对象,如下所示:

Calendar.GEvent eventD = new Calendar.GEvent();

我从自定义控件中获取StartTimeEndTime的值。但是,此控件会返回DateTime而不是TimeSpan,因此我需要将DateTime转换为TimeSpan。这就是我所做的:

eventD.StartTime = new TimeSpan((long)EventTimeStart.SelectedTime.Value);

其中EventTimeStart是自定义控件。现在有一个问题new TimeSpan等待很长时间,所以我试图将控制值隐式转换为(long)但是我得到了:

  

无法将类型System.DateTime转换为' Long'

我也尝试过:

long startTime = EventTimeStart.SelectedTime.Value;

但是是一回事。我该怎么做才能解决这个问题?

enter image description here

1 个答案:

答案 0 :(得分:2)

这是:

TimeSpan startTime = EventTimeStart.SelectedTime.Value.TimeOfDay;

由于TimeSpan是DateTime的一部分,您无法转换。但是你可以用.TimeOfDay来获取它。

根据评论中的错误:请勿尝试将TimeSpan存储在long中。
long time = something.TimeOfDay;无法工作。