获取输入为字符串的日期的整数

时间:2014-10-01 11:52:49

标签: c# winforms datetime

我很难理解如何获得与包含当天名称的字符串相对应的编号日(月份)。例如,我们假设星期一是1月的第一天。我用“星期一”这个词填充一个字符串。在创建一个cron字符串时,我需要将“Monday”更改为“1”。

简单地使用“星期一”不是一个选项,因为我创建的特定字符串指定 next 星期一(并且仅在下周一)作为目标日期。

我可以看到如何与关注DateTime.DayOfWeek的MSDN文章进行比较,但是我不确定如何获取与下周一日期相对应的整数。

PS - 我很恐怖地意识到这是一种可怕的格式,但对于我的生活,我不知道如何更好地说出来。欢迎你去参加。

2 个答案:

答案 0 :(得分:2)

我使用此代码生成一周中有序的数组。 (发现类似的东西,不知道在哪里)。它需要一周中的几天,并根据区域设置进行订购。

您可以遍历dayNamesShifted以比较当天的名称并返回其索引。

int firstDayOfWeek = (int)CultureInfo.CurrentCulture.DateTimeFormat.FirstDayOfWeek;
string[] dayNamesShifted = Shift(CultureInfo.CurrentCulture.DateTimeFormat.DayNames, firstDayOfWeek);

Shift的位置:

private static T[] Shift<T>(T[] array, int positions)
{
    T[] copy = new T[array.Length];
    Array.Copy(array, 0, copy, array.Length - positions, positions);
    Array.Copy(array, positions, copy, 0, array.Length - positions);
    return copy;
}

答案 1 :(得分:1)

如果您打算在下周一计算,似乎代码已经在StackOverflow上列出(例如Datetime - Get next tuesday)。如果您只支持英语(仅使用DayOfWeek之类的东西),将日期字符串转换为Enum.Parse()枚举应该相当简单。否则,您可以考虑@Patrick Hofman的答案中列出的当前文化。