添加或求和小时数,例如 13:30+00:00:20=13:30:20 但如何实现?

问题描述 投票:0回答:10

我想在日期时间值上添加秒(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# .net algorithm datetime
10个回答
9
投票
myDateTimeVariable.Add(new TimeSpan(2,2,2));

7
投票

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

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

5
投票

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

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");

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


3
投票

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

DateTime myDate = DateTime.Now;

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

2
投票

这个问题比较抽象。如前所述,.NET 中有两种类型 -

DateTime
TimeSpan
DateTime
类型表示特定时间点。这不是一个时间间隔。自宇宙诞生以来,它一直是一个特定的位置。即使将年/月/日部分设置为 0,它仍然代表某个绝对时间点。时间不长。

另一方面,

TimeSpan

代表某个区间。 1分钟,2天,等等。没有指定何时,只指定多长时间。

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

在我看来,你应该一直使用

TimeSpan

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


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


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

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

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(); }
    

0
投票
添加小时和分钟,即使小时超过 24 或从时间列表(即小时和分钟)中计算总和并在响应中获取小时和分钟。

List<string> time = new List<string>(); time.Add("19.55"); time.Add("38.39"); TimeSpan ts = new TimeSpan(); foreach (var item in time) ts = ts.Add(new TimeSpan(Convert.ToInt32(item.Split('.')[0]), Convert.ToInt32(item.Split('.')[1]), 0)); Console.WriteLine(string.Format("{0}.{1}", (int)ts.TotalHours, (int)ts.Minutes));
    
© www.soinside.com 2019 - 2024. All rights reserved.