将字符串(T,T-1,T 1)转换为C#中的DateTime

时间:2013-12-09 07:45:23

标签: c# datetime

我有一个控件,它以字符串格式(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。

你能否建议任何标准/好方法来实现这一目标?

1 个答案:

答案 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);
}