我想在字符串中格式化一些文本。因此,如果我输入文字0759
,则应将其格式化为07:59 (minutes and seconds)
。
它应该像这样工作(伪代码)
输入759 - >输出07:59
输入10545 - >输出01:05:45(小时,分钟,秒)
输入5 - >输出00:05
我考虑过使用string.Format()
,但作为一个新手,我真的不知道该怎么做。
谢谢!
答案 0 :(得分:1)
你必须跳过几个不同的箍才能完成这项工作。您需要将数字转换为字符串,并将它们填充到适当数量的位置(6)。然后,您必须使用适当的信息调用DateTime.ParseExact。以下代码适用于您需要的一切:
void Main()
{
var i = 10545;
var t = i.ToString().PadLeft(6, '0');
var d = DateTime.ParseExact(t, "HHmmss", System.Globalization.CultureInfo.InvariantCulture );
Console.WriteLine(string.Format("{0:HH:mm:ss}", d));
}
您需要使用24小时格式来获得所需的确切小时,小时,秒。超过235959的任何内容都会出错,因此您必须以不同的方式处理。
请参阅documentation了解DateTime.ParseExact()和documentation了解格式代码
答案 1 :(得分:1)
您可以使用此方法:
public static TimeSpan? TryParseTimeSpan(string input)
{
TimeSpan? ts = (TimeSpan?)null;
if (!string.IsNullOrWhiteSpace(input))
{
input = input.Trim();
int length = input.Length % 2 == 0 ? input.Length : input.Length + 1;
int count = length / 2;
if(count > 3) return null;
input = input.PadLeft(count * 2, '0');
string[] validFormats = new[] { "HHmmss", "mmss", "ss" };
DateTime dt;
if (DateTime.TryParseExact(input, validFormats, CultureInfo.InvariantCulture, DateTimeStyles.None, out dt))
ts = dt.TimeOfDay;
}
return ts;
}
但是,它不接受89秒的第二部分,这不是有效的输入(imho)。
使用此示例输入进行测试:
List<string> inputs = new List<string> { "78", "10545", "5" };
IEnumerable<TimeSpan> timeSpans = inputs
.Select(i => TryParseTimeSpan(i))
.Where(ts => ts.HasValue)
.Select(ts => ts.Value);
foreach (TimeSpan ts in timeSpans)
Console.WriteLine(ts.ToString());
输出:
01:05:45
00:00:05
答案 2 :(得分:1)
List<string> inputs = new List<string> { "78", "10545", "5" };
IEnumerable<TimeSpan> timeSpans = inputs
.Select(i => TryParseTimeSpan(i))
.Where(ts => ts.HasValue)
.Select(ts => ts.Value);
foreach (TimeSpan ts in timeSpans)
Console.WriteLine(ts.ToString());
答案 3 :(得分:0)
首先,你需要配置00:00的格式,你想要使用格式字符串"00:00"
string input = 0789
input = String.Format("00:00",input); //input is now 07:89
但是,对于超过4位的值,这不起作用。使用TimeSpan
对象将是处理这些对象的更好方法,因为它们已经具有分钟和时间。第二部分
TimeSpan:http://msdn.microsoft.com/en-us/library/system.timespan.aspx
格式来源:http://msdn.microsoft.com/en-us/library/system.string.format.aspx