C# 加上或加上13:30+;00:00:20=13:30:20但如何?
我想在datetime值(可能是存储字符串类型)上添加秒(00:00:02)或分钟(00:00: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
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();
}