我有两个DateTime变量,beginTime和endTime.通过执行以下操作,我得到了它们的不同之处:
TimeSpan dateDifference = endTime.Subtract(beginTime);
Run Code Online (Sandbox Code Playgroud)
我现在如何使用C#以hh,mm mins,ss secs格式返回一串字符串.
如果差异是00:06:32.4458750
它应该返回00小时,06分钟,32秒
我正在尝试以"[分钟]:[秒]"的格式格式化TimeSpan元素.在这种格式中,2分8秒看起来像"02:08".我已经尝试了String.Format和ToString方法的各种选项,但我得到了一个FormatException.这就是我目前正在尝试的:
DateTime startTime = DateTime.Now;
// Do Stuff
TimeSpan duration = DateTime.Now.Subtract(startTime);
Console.WriteLine("[paragraph of information] Total Duration: " + duration.ToString("mm:ss"));
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?如何使用我想要的格式格式化TimeSpan元素?
谢谢
你如何优雅地格式化时间跨度,例如"1小时10分钟",当你声明它时:
TimeSpan t = new TimeSpan(0, 70, 0);
Run Code Online (Sandbox Code Playgroud)
?
我当然知道你可以为此做一些简单的数学运算,但我有点希望.NET中有一些东西能够为我处理这个问题 - 对于更复杂的场景
我正在使用.NET 3.5编译C#并尝试将TimeSpan转换为字符串并格式化字符串.我想用
myString = myTimeSpan.ToString("c");
但是在TimeSpan.ToString.NET 4.0和我使用.NET 3.5之前,该方法不会将格式字符串作为参数.
那么你如何将TimeSpan格式化为字符串?我的最终目标是以格式显示TimeSpan,hh:mm:ss但目前正在接收hh:mm:ss:fffffff.
我试过用
myString = string.Format("{0:hh:mm:ss}", myTimeSpan);
但是string.Format只是格式化我的DateTime,并且在尝试格式化TimeSpan时传递不同的格式字符串不起作用.
有没有人知道用于将TimeSpan对象转换为"友好"字符串的好库(或代码片段),例如:
(这是一个文件到期系统,到期时间可能是几天到几十年)
只是为了澄清,说我有7天的TimeSpan,应打印"1周",14天"2周",366天"1年1天"等.
我最近将ASP.Net表单应用程序升级到.Net 4.5.2,在修复了一些相对微不足道的命名空间问题后,我能够成功构建解决方案.但是在运行时我收到了以下错误:
mscorlib.dll中出现"System.FormatException"类型的异常,但未在用户代码中处理
在以下行抛出调试时:
string.Format("Init took {0:mm:ss}", (object) DateTime.Now.Subtract(renderStartTime))
Run Code Online (Sandbox Code Playgroud)
其中renderStartTime = DateTime.Now
我有点困惑,为什么我升级后看到这个错误.有什么想法吗?
我想转换
var delta = TimeSpan.FromSeconds(10);
Run Code Online (Sandbox Code Playgroud)
像字符串一样 00:00:01
我试试这个 delta.ToString(@"0:\\hh\\:mm\\:ss", System.Globalization.CultureInfo.InvariantCulture);
但没有什么工作正常.另外我在这里找不到https://msdn.microsoft.com/en-us/library/ee372287.aspx这样做的正确方法.
方法ToString()没有帮助所以我需要格式谎言hh:mm:ss.
我是c#的新手并使用Windows窗体.这段代码的结果是:01:38:07.0093844.任何人都知道如何从结果(ts)中删除毫秒部分(0093844)我希望结果看起来像这样:01:38:07(H:mm:ss)没有毫秒.
请帮帮忙.谢谢
string OldDateTime = "2016-03-02 13:00:00.597"; //old DateTime
DateTime CurrentDateTime = DateTime.Now;
TimeSpan ts = CurrentDateTime.Subtract(Convert.ToDateTime(OldDateTime)); //Difference
//result of ts = 01:38:07.0093844
Run Code Online (Sandbox Code Playgroud) 我必须在DataTable中进行更多时间跨度的总和以使用下面的代码,但是总和是错误的,原因是:
DataTable(dt)值:
09:21
08:28
08:46
04:23
Total hours: 30,97 //97 minutes is not correct
Run Code Online (Sandbox Code Playgroud)
C#代码:
TimeSpan totaleOreMarcaTempo = TimeSpan.Zero;
int conta = 0;
foreach (DataRow dr in dt.Rows)
{
String OreMarcaTempo = tm.ConteggioOreGiornaliere(dr["Data"].ToString()); //This string contains at each cycle 09:21 08:28 08:46 04:23
TimeSpan oreMarcatempo = TimeSpan.Parse(OreMarcaTempo.ToString());
totaleOreMarcaTempo = totaleOreMarcaTempo + oreMarcatempo;
conta++;
}
labelTotaleOreMarcaTempoMod.Text = "" + (int)totaleOreMarcaTempo.TotalHours + ":" + totaleOreMarcaTempo.Minutes.ToString(); //30:58
Run Code Online (Sandbox Code Playgroud) 我不是一个好的程序员,而是我的爱好。所以请不要因为我不擅长编程而评判我。这是我为倒数计时器制作的当前代码。
int i = 000000;
private void timer1_Tick(object sender, EventArgs e)
{
{
i++;
textBox1.Text = i.ToString() + "00:00:00";
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行计时器时。那么 TextBox1 不显示 00:00:01,而是显示 100;00;00。感谢您再次阅读我的帖子,抱歉我的编程知识太差了。
c# ×11
timespan ×7
.net ×4
.net-3.5 ×1
asp.net ×1
datagridview ×1
formatting ×1
time-format ×1
tostring ×1
winforms ×1