我有一个控件,它以字符串格式(T或T-1,T + 1等)提供日期选择,并将T视为今天的日期。我想将字符串选择日期(T或T-1,T + 1)转换为DateTime。
请注意,T(今天),T-1(昨天),T + 1(Tommorrow)是从控件收到的,并且是字符串格式,一次有一个日期。 T,T-1或T + 1等 我需要将T转换为类似09/12/2013的东西(例如使用DD / MM / YYYY格式) T-1至08/12/2013和T + 1至10/12/2013。
你能否建议任何标准/好方法来实现这一目标?
答案 0 :(得分:1)
您可以使用正则表达式验证输入并提取运算符(+/-)和天数:
var input = "T - 51";
// input ca be "[whitespace]T[whitespace][+-][whitespace][number][whitespace]
// (whitespace is optional at every position)
var re = new Regex(@"\s*[T]\s*(?<op>[+-])\s*(?<days>\d+)\s*");
// check if input is valid
var match = re.Match(input);
if (match.Success)
{
// extract operator and number of days
var op = match.Groups["op"].Value;
var days = int.Parse(match.Groups["days"].Value);
// calculate resulting date
var date = DateTime.Now.AddDays(op == "+" ? days : -days);
}