当输入为字符串时,获取日期的整数
本文关键字:获取 取日期 整数 输入 字符串 | 更新日期: 2023-09-27 18:25:09
我很难理解如何获得与包含日期名称的字符串相对应的编号日期。例如,让我们假设星期一是一月的第一天。我用"星期一"这个词填充一个字符串。在创建cron字符串时,我需要将"Monday"更改为"1"。
简单地使用"星期一"不是一个选项,因为我正在创建的特定字符串指定下一个星期一(仅下周一)为目标日期。
我可以看到如何与MSDN中关于DateTime.DayOfWeek
的文章进行比较,但我非常不确定如何获得与下周一日期相对应的整数。
PS-我非常清楚这是一个糟糕的格式,但就我的一生而言,我不知道如何更好地表达它。欢迎您尝试一下
我使用此代码生成一个一周中几天的有序数组。(我自己也发现了类似的东西,不确定在哪里)。它需要一周中的几天,并根据地区设置进行订购。
您可以对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;
}
如果您想计算下周一,代码似乎已经在StackOverflow上列出(例如Datetime-Get next tuesday)。如果您只支持英语(只需使用类似Enum.Parse()
的内容),那么将日期字符串转换为DayOfWeek
枚举应该相当简单。否则,你可以考虑到@Patrick Hofman的回答中列出的当前文化。