我正在尝试用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);
干杯
答案 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
类型,那么将其转换为int
或DateTime
只是为了在此之后再次对其进行字符串化是没用的。
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
)。
答案 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)
);