Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 加上或加上13:30+;00:00:20=13:30:20但如何?_C#_.net_Algorithm_Datetime - Fatal编程技术网

C# 加上或加上13:30+;00:00:20=13:30:20但如何?

C# 加上或加上13:30+;00:00:20=13:30:20但如何?,c#,.net,algorithm,datetime,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) 你能帮我吗?我需要你的酷算法:)再次感谢…我不太确定你想要什么,但是你能不能不只是使用C#的DateTime对象的内置函数 DateTime myDate = Dat

我想在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) 

你能帮我吗?我需要你的酷算法:)再次感谢…

我不太确定你想要什么,但是你能不能不只是使用C#的DateTime对象的内置函数

DateTime myDate = DateTime.Now;

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

使用TimeSpan结构。您可以同时添加时间跨度,也可以将时间跨度添加到日期时间以生成新的日期时间。

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

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");
最后,将您的示例作为日期(未测试!):

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

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

TimeSpan a = TimeSpan.Parse(timeStringA)+TimeSpan.Parse(TimeStringB);
要像“00:00:20+00:01:00”那样拆分字符串,请查看


如果选择使用时间跨度,请注意天数部分:

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 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

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

另一方面,
TimeSpan
表示某个间隔。一分钟,两天,随便什么。没有具体说明什么时候,多长时间

因此,如果要减去两个DateTime对象,将得到一个TimeSpan对象,该对象指定它们之间的时间间隔。如果你给一个日期时间加上一个时间跨度,你会得到另一个日期时间。但是你不能将一个日期时间添加到另一个日期时间-那没有意义


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

嗨,不幸的是,从你的例子来看,你不清楚你在追求什么,这就是为什么现在还没有一个好的答案。如果您尝试显示更多的代码,或者简要介绍您实际执行的操作,那么可能会有人提供帮助。(请参阅“我需要你的酷算法”和他随后的“响应”)。解决方案:TimeSpan a=TimeSpan.Parse(“12:30:22”)+TimeSpan.Parse(“11:20:22”);Console.Write(a.ToString());Console.ReadKey();谢谢大家!我喜欢Stackoverflow…在Stackoverflow,请不要只是粘贴代码,还要解释你的方法。在这种情况下,您可能还需要解释您的迟交答案对已给出(并已接受)的答案的补充。
return string.Format("{0}:{1}:{2}", mytimespan.Hours 
    + (mytimespan.Days*24),mytimespan.Minutes,mytimespan.Seconds);
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 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
return string.Format("{0}:{1}:{2}", mytimespan.Hours 
    + (mytimespan.Days*24),mytimespan.Minutes,mytimespan.Seconds);
    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();
    }