将字符串中的文本格式设置为hh:mm:ss,仅在需要时设置小时
本文关键字:设置 小时 ss mm 格式 文本 字符串 hh | 更新日期: 2023-09-27 18:29:50
我想格式化字符串中的一些文本。因此,如果我输入文本0759
,它应该将其格式化为07:59 (minutes and seconds)
。
同样,它应该像这样工作(伪代码)
输入759->输出07:59
输入10545->输出01:05:45(小时、分钟、秒)
输入5->输出00:05
我曾想过使用string.Format()
,但作为一个新手,我真的不知道如何做到这一点。
谢谢!
你必须经历几个不同的环节才能完成这项任务。您需要将数字转换为字符串,并将它们填充到适当的位数(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的都会出错,所以你必须以不同的方式处理。
请参阅DateTime.ParseExact()的文档和格式代码的文档
您可以使用此方法:
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
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());
首先,您需要配置00:00的格式,您希望使用格式字符串"00:00"
string input = 0789
input = String.Format("00:00",input); //input is now 07:89
但是,对于超过4位的值,这将不起作用。使用CCD_ 5对象将是处理这些对象的更好方式;第二组分
时间跨度:http://msdn.microsoft.com/en-us/library/system.timespan.aspx
格式来源:http://msdn.microsoft.com/en-us/library/system.string.format.aspx