我很难理解如何获得与包含当天名称的字符串相对应的编号日(月份)。例如,我们假设星期一是1月的第一天。我用“星期一”这个词填充一个字符串。在创建一个cron字符串时,我需要将“Monday”更改为“1”。
简单地使用“星期一”不是一个选项,因为我创建的特定字符串指定 next 星期一(并且仅在下周一)作为目标日期。
我可以看到如何与关注DateTime.DayOfWeek
的MSDN文章进行比较,但是我不确定如何获取与下周一日期相对应的整数。
PS - 我很恐怖地意识到这是一种可怕的格式,但对于我的生活,我不知道如何更好地说出来。欢迎你去参加。
答案 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的答案中列出的当前文化。