小时数的增加或总和如13:30 + 00:00:20 = 13:30:20但是怎么样?

时间:2009-02-04 10:18:15

标签: c# .net algorithm datetime

我想在datetime值上添加秒(00:00:02)或分钟(00:00:20)(可能存储字符串类型)但是如何?例子:

13:30+02:02:02= 15:32:02 ,
13:30+00:00:01= 13:30:01 ,
13:30+00:01:00=13:31:00 or 13:30 (not important) 
你能帮帮我吗?我需要你的酷算法:)再次感谢...

9 个答案:

答案 0 :(得分:9)

myDateTimeVariable.Add(new TimeSpan(2,2,2));

答案 1 :(得分:4)

从字符串添加两个日期时间:

var result = DateTime.Parse(firstDate) + DateTime.Parse(secondDate);

将字符串时间添加到日期时间:

var result = existingDateTime.Add(TimeSpan.Parse(stringTime);

按照示例添加时间:

var result = TimeSpan.Parse("12:30:22") + TimeSpan.Parse("11:20:22");

最后,你的例子作为日期(未经测试!):

var result = DateTime.Parse("12:30:22") + DateTime.Parse("11:20:22");

请注意,这是一个草率的编码,但你明白了。您需要以某种方式验证该字符串实际上是否可解析。

答案 2 :(得分:4)

如果您选择使用TimeSpan,请注意Days部分:

TimeSpan t1 = TimeSpan.Parse("23:30");
TimeSpan t2 = TimeSpan.Parse("00:40:00");
TimeSpan t3 = t1.Add(t2);
Console.WriteLine(t3); // 1.00:10:00

使用DateTime:

DateTime d1 = DateTime.Parse("23:30");
DateTime d2 = DateTime.Parse("00:40:00");
DateTime d3 = d1.Add(d2.TimeOfDay); 
Console.WriteLine(d3.TimeOfDay); // 00:10:00

答案 3 :(得分:2)

不确定你在追求什么,但你能不能只使用C#的DateTime对象的内置函数?

DateTime myDate = DateTime.Now;

myDate = myDate.AddHours(1);
myDate = myDate.AddMinutes(30);
myDate = myDate.AddSeconds(45);

答案 4 :(得分:2)

问题更抽象。如前所述,在.NET中有两种类型 - DateTimeTimeSpanDateTime类型表示特定时间点。这不是一段时间。这是宇宙诞生以来的一个特定位置。即使您将年/月/日组件设置为0,它仍将代表一些绝对时间点。不是一段时间。

另一方面TimeSpan代表一些间隔。 1分钟,2天,无论如何。它没有指定WHEN,只是如此。

因此,如果您要减去两个DateTime对象,您将获得一个TimeSpan对象,该对象指定它们之间的时间。如果您将TimeSpan添加到DateTime,您将获得另一个DateTime。但是你不能将DateTime添加到另一个DateTime - 这没有任何意义。

听起来我觉得你应该一直与TimeSpan一起工作,因为你处理的是时间长度,而不是绝对的时间点。如果你从源代码中获得这些长度作为DateTime,那么实际上这是不正确的,你应该以某种方式将它们转换为TimeSpan。解析方法是建议的一种方法,但您也可以尝试从中减去零DateTime。这可能更快,更独立于文化。

答案 5 :(得分:1)

使用TimeSpan结构。您可以将TimeSpans一起添加,也可以将TimeSpan添加到DateTime以生成新的DateTime。

答案 6 :(得分:1)

你应该看看TimeSpan.Parse。这会将字符串转换为TimeSpan对象。这样你可以做像

这样的事情
TimeSpan a = TimeSpan.Parse(timeStringA)+TimeSpan.Parse(TimeStringB);

要分割像“00:00:20 + 00:01:00”这样的字符串,请查看string.split

stringA = timeSting.split('+')[0];
stringb = timeSting.split('+')[1];

答案 7 :(得分:0)

return string.Format("{0}:{1}:{2}", mytimespan.Hours 
    + (mytimespan.Days*24),mytimespan.Minutes,mytimespan.Seconds);

答案 8 :(得分:0)

    static void Main(string[] args)
    {
        String timeText = "3/23/2015 12:00:13 AM"; 
        String timeText2 = "3/23/2015 1:45:03 AM"; 

        DateTime time = Convert.ToDateTime(timeText);
        string temp = time.ToString("HH:mm:ss");

        DateTime time2 = Convert.ToDateTime(timeText2);
        string temp2 = time2.ToString("HH:mm:ss");

        TimeSpan t1 = TimeSpan.Parse(temp);
        TimeSpan t2 = TimeSpan.Parse(temp2);

        Console.Out.WriteLine(t1 + t2);  // 01:45:16

        Console.ReadLine();
    }