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

本文关键字:获取 取日期 整数 输入 字符串 | 更新日期: 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的回答中列出的当前文化。