c# - 将字符串转换为时间并再次返回

标签 c# asp.net

我正在将这种格式“00.000”的小数小时值转换为小时和分钟格式。所以“02.500”将是“02:30”,我也必须反过来做。

我构建了一个测试,看看它是如何工作的,

<%
    TimeSpan tspan;
    TimeSpan tspan2;   

     string TimeString;
     string TimeString2;
     string Converted;
     double ConvTime;
     for (int HH = 0; HH < 24; HH++)
     {
         for (int M1 = 0; M1 < 6; M1++)
         {
             for (int M2 = 0; M2 < 10; M2++)
             {
                 TimeString = HH.ToString() + ":" + M1.ToString() + M2.ToString();

                 // Convert Time String to Fractional Hours 
                 tspan = TimeSpan.Parse(TimeString);
                 ConvTime = Convert.ToDouble(tspan.TotalHours);
                 Converted = String.Format("{0:00.000}", ConvTime);

                 // Convert Fractional Hour String to Time String
                 tspan2 = TimeSpan.FromHours(Convert.ToDouble(Converted));
                 TimeString2 = string.Format("{0:D1}:{1:D2}", tspan2.Hours, tspan2.Minutes);


                 Response.Write(TimeString + " = ");
                 Response.Write(Converted + " = ");
                 Response.Write(TimeString2 + "<br>");
             }
         }
     }     
%> 

我遇到的问题是,当我转换为字符串时,我丢失了转换后的余数,这在转换回来时丢弃了值。

这是前 10 秒的输出。

0:00 = 00.000 = 0:00
0:01 = 00.017 = 0:01
0:02 = 00.033 = 0:01
0:03 = 00.050 = 0:03
0:04 = 00.067 = 0:04
0:05 = 00.083 = 0:04
0:06 = 00.100 = 0:06
0:07 = 00.117 = 0:07
0:08 = 00.133 = 0:07
0:09 = 00.150 = 0:09
0:10 = 00.167 = 0:10

如您所见,我开始的并不总是我最终的结果。

如何正确地将时间值字符串“HH:MM”转换为小数字符串“00.000”并再次正确转换回来。

谢谢

编辑:

我试过了,

 TimeString = "02:02";
 Converted = TimeSpan.Parse(TimeString).TotalHours.ToString("00.000");

 tspan2 = TimeSpan.FromHours(Convert.ToDouble(Converted));
 TimeString2 = string.Format("{0:D1}:{1:D2}", tspan2.Hours, tspan2.Minutes);

但我得到 Converted = "02.033"和 TimeString2 = "2:01"。它应该等于“2:02”。我在想,当我将它强制为“00.000”时,我正在失去剩余部分。

最佳答案

要将字符串转换为小时,请使用:

string time = "1:30";
double hours = TimeSpan.Parse(time).TotalHours; // -> 1.5

反过来,你可以使用这个:

double hours = 1.5;
string time = TimeSpan.FromHours(hours).ToString(); // -> "00:01:30"

关于c# - 将字符串转换为时间并再次返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1460284/

相关文章:

c# - NSubstitute 测试本身有效,但会在套件中抛出意外的匹配器参数

javascript - 无法从js调用 Controller 方法

c# - 如何使用 C# 在 .NET 中获取当前用户名?

c# - 将 DataGridViewAutoFilter 与 Equin BindingListView 结合使用

c# - Azure Functions 中 local.settings.json 的值

c# - Regex.Replace 在 html 字符串中查找可变宽度和高度并替换为设置值

asp.net 用户控件部署

c# - 为不同的 Web 应用程序共享相同的配置设置

c# - 从动态创建的 TextBox ASP.NET 中读取值(表内)

asp.net - 自承载 WCF 服务中的 Autofac 对象生命周期范围