如何将字符串格式化为hh:mm:ss?

时间:2017-08-29 13:16:15

标签: c#

我正在尝试用C#制作数字时钟。我有3个计数器对象,持续数小时,分钟和秒。它必须采用hh:mm:ss格式。

我设法做了什么

String hours =  _hours.Value.ToString();
String minutes = _minutes.Value.ToString();
String seconds = _seconds.Value.ToString();

if (hours.Length == 1)
{
    hours = "0" + hours;
}

if (minutes.Length == 1)
{
    minutes = "0" + minutes;
}

if (seconds.Length == 1)
{
    seconds = "0" + seconds;
}

return hours + ":" + minutes + ":" + seconds;

它可以工作,但我正在尝试使用String.format更有效地完成它。我尝试了几种不同的正则表达式,但都没有成功。

string b = string.Format("{0:D2}:{1:00}:{2:d2}", hours, minutes, seconds);

干杯

6 个答案:

答案 0 :(得分:3)

在尝试string.Format之前,您是否尝试将字符串转换为int?像下面的东西

string.Format("{0:00}:{1:00}:{2:00}", 
                int.Parse(hours), int.Parse(minutes), int.Parse(seconds));

如果_hours.Value_minutes.Value_seconds.Value是数字类型,那么您可以使用以下更有效的代码

string.Format("{0:00}:{1:00}:{2:00}", 
                _hours.Value, _minutes.Value, _seconds.Value);

答案 1 :(得分:2)

IMO如果您已经拥有string类型,那么将其转换为intDateTime只是为了在此之后再次对其进行字符串化是没用的。

我会使用JSON data console output方法:

string h = hours.PadLeft(2, '0');
string m = minutes.PadLeft(2, '0');
string s = seconds.PadLeft(2, '0');
string result = h + ":" + m + ":" + s;

PadLeft将使您的字符串的长度始终至少为作为第一个参数传递的值(在本例中为2),并使用第二个参数中传递的值填充“空”位置(在这种情况下0)。

String.PadLeft

答案 2 :(得分:1)

你总是可以尝试一些不同的东西:

DateTime dt = new DateTime(2000, 1, 1, hours, minutes, seconds); // just ignore year, month and day
var x = dt.ToString("HH:mm:ss");

答案 3 :(得分:1)

您可以使用ToString() DateTime方法提供的格式选项,如下所示:

 (new DateTime(1900, 1, 1, _hours.Value, _minutes.Value, _seconds.Value)).ToString("HH:mm:ss");

答案 4 :(得分:0)

您可以尝试使用:

string b = DateTime.Now.ToString("HH:mm:ss");

答案 5 :(得分:0)

如果你有一些日期变量,你可以这样做:

string b = dateVar.ToString("HH:mm:ss");

如果您想要完全符合您的示例,那么:

return string.Format("{0:00}:{1:00}:{2:00}", 
    int.Parse(hours), 
    int.Parse(minutes), 
    int.Parse(seconds)
);