如何从DateTime和TimeSpan类型创建一个DateTime对象?

3
我将使用Google日历API进行说明。现在我已经创建了一个名为GEvent的类,下面是其结构:

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

其中StartDate是事件开始的日期,StartTime是该日期的小时数。

我会这样填写该字段:

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

eventD.StartDate = StartDate.SelectedDate.Value;
eventD.StartTime = TimeStart.SelectedTime.Value;

在这里,StartDate是一个日期选择器,而TimeStart是一个时间选择器(自定义控件只能获取小时部分)。

当我为Google日历API创建事件时,声明如下:

 Event myEvent = new Event
{
    Start = new EventDateTime()
    {
            DateTime = new DateTime(eventD.StartDate, eventD.StartTime),
            TimeZone = "Europe/Rome"
    }
    ... 
};

你可以看到我不能通过两个对象的结合来创建一个 DateTime 对象。我该如何实现这个结果呢?

1个回答

2
您可以使用 DateTime.Add 方法将一个 TimeSpan 添加到现有的 DateTime 中。
Event myEvent = new Event
{
    Start = new EventDateTime()
    {
        DateTime = eventD.StartDate.Add(eventD.StartTime)),
        TimeZone = "Europe/Rome"
    }
}

或者就像Jon所说的那样,您可以将这两个值相加:

...
DateTime = eventD.StartDate + eventD.StartTime,
...

(这是可能的,因为DateTime重载了+运算符。它接受一个DateTime和TimeSpan值,将两者相加,然后返回一个新的DateTime。)


2
或者直接使用运算符:eventD.StartDate + eventD.StartTime - Jon Skeet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接