长话短说:
我需要 的倒置函数WeekdayName()
,用以下术语表示:
- 您提供工作日名称(例如星期日)
- 您将获得对应的工作日编号(这取决于返回的第一个工作日
WeekdayName
,例如,如果星期日是一周的第一天,您将获得 1 表示星期日)
背景:
我在 vb.net 中使用日期函数。到现在为止还挺好。我正在使用该功能WeekdayName()
来设置标签页的标题TabControl
。我的自定义控件(一种日历控件)包含上述TabControl
内容,并且可以选择要显示一周中的哪一天。
如果要显示所有日期,TabControl
将通过迭代上述功能(由系统日历本地化和管理并由我大写)来TabPage
填充。WeekdayName()
如果您只设置周二和周五,您将有两个标签页,其中包含这些标题并排序为[Tuesday | Friday]
. 如果您决定添加星期三,现在您应该有 3 个标签页:[Tuesday | Wednesday | Friday]
,依此类推...
为了使标签保持有序,当我需要插入要显示的标签时,我想提供标签的标题以检查新插入的工作日名称,并以这种方式解决订单。
我相信一种解决方法是创建一个带有标签标题字符串的假日期对象,以便有一个例如“星期日”日期,然后使用:Weekday()
但我希望有一个 API 解决方案。
注意:这不是:如何从日期中获取日期。
编辑:
正如我们与@jmshapland 讨论的那样,使用默认本地化和系统设置的自定义代码方法可能是:
Function WeekdayNumber(day as String)
' The following initialization does not necessary go in this function.
' The idea is to have a mapping between key day name and index in the
' same order as the WeekdayName() method with the default system settings
Dim weekdayNamesCollection as Collection = New Collection()
For i = 1 to WEEKDAYS
Dim wDay as String = WeekdayName(i)
' add the day with a key with the same name
weekdayNamesCollection.add(wDay, wDay)
Next i
If weekdayNamesCollection.ContainsKey(day) Then
Return weekdayNamesCollection.IndexOfKey(day) + 1
End If
' Raise an error as the string 'day' is not in the collection
End Sub
我没有对此进行测试,因为我在没有任何框架和/或 IDE 的计算机中。但基本上,这个想法是返回集合中存储工作日名称的索引(以前,它在系统设置顺序中存储为WeekdayName()
.