私は今日の私たちのジェンキンズビルドの時間リストを持っています。このリストを解析し、ビルドの日付時刻を返したいと思います。C#Parse String to Date Time
List (Time since build)
-----------------------
1 day 21 hr
1 day 22 hr
1 mo 14 days
1 mo 14 days
27 days
1 day 6 hr
1 mo 14 days
6 min 13 sec
例えば:1日21時間 - >今日から時間2016年5月22日午前九時00分00秒PM
は、私が一緒に、次の正規表現のバージョンを入れて返す必要があります...しかし、それは非常に感じていますハッキーと脆い。
このテキストをよりよく解析できますか。
using System;
using System.Text.RegularExpressions;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string txt = "1 day 21 hr";
string regexday = "(\\d\\s+day)"; // 1 day
string regexdaymultiple = "(\\d\\d\\s+day)"; //10 days
string regexhr = "(\\s+\\d\\s+hr)"; // 1 hr
string regexhrmultiple = "(\\s+\\d\\d\\s+hr)"; // 21 hr
Regex regexdaymatch = new Regex(regexday, RegexOptions.IgnoreCase | RegexOptions.Singleline);
Match matchday = regexdaymatch.Match(txt);
if (matchday.Success)
{
String d1 = matchday.Groups[1].ToString();
DateTime now = DateTime.Now;
Console.Write("("+now.AddDays(-Convert.ToInt32(d1.Replace(" day", "")))+")" + "\n");
}
Regex regexdaymutliplesmatch = new Regex(regexdaymultiple, RegexOptions.IgnoreCase | RegexOptions.Singleline);
Match matchdaymultiple = regexdaymutliplesmatch.Match(txt);
if (matchdaymultiple.Success)
{
String d1 = matchdaymultiple.Groups[1].ToString();
DateTime now = DateTime.Now;
Console.Write("(" + now.AddDays(-Convert.ToInt32(d1.Replace(" day", ""))) + ")" + "\n");
}
Regex regexhrmatch = new Regex(regexhr, RegexOptions.IgnoreCase | RegexOptions.Singleline);
Match matchhr = regexhrmatch.Match(txt);
if (matchhr.Success)
{
String d1 = matchhr.Groups[1].ToString();
DateTime now = DateTime.Now;
Console.Write("(" + now.AddHours(-Convert.ToInt32(d1.Replace(" hr", ""))) + ")" + "\n");
}
Regex regexhrmultiplematch = new Regex(regexhrmultiple, RegexOptions.IgnoreCase | RegexOptions.Singleline);
Match matchhrmultiple = regexhrmultiplematch.Match(txt);
if (matchhrmultiple.Success)
{
String d1 = matchhrmultiple.Groups[1].ToString();
DateTime now = DateTime.Now;
Console.Write("(" + now.AddHours(-Convert.ToInt32(d1.Replace(" hr", ""))) + ")" + "\n");
}
Console.ReadLine();
}
}
}
:ここ
は修正
Main
方法であり、それらの内容に基づいて数時間に配列し、DateTime.Nowから減算します。 – mjw