9

我在埃塞俄比亚,我们有 13 个月的时间。其中 12 个月有 30 天,第 13 个月有 5 天或 6 天。我想使用BindingSourcesort 方法按日期对数据进行排序。但要做到这一点,我需要将我的日期字段设置为日期数据类型。当我设置DataType到日期时,我不能输入一些值,比如月份值 13 和第二个月的日值 30。

我想要的只是让我的应用程序接受 13 作为一个月和 30 作为所有月份的一天,这样我就可以按日期对数据进行排序。是否可以通过为我的应用程序设置文化或通过其他方式来做到这一点?

4

2 回答 2

3

理论上,您可以CultureInfo为埃塞俄比亚加载对应的语言/国家。埃塞俄比亚的母语似乎是阿姆哈拉语,其 ISO 639 短代码为“am”,埃塞俄比亚的 ISO 3166 国家代码为“ET”。因此,埃塞俄比亚的正确文化代码似乎是“am-ET”。因此,请尝试以下操作。

CultureInfo ethiopia = new CultureInfo("am-ET");
int year = 2002; // it is currently 2002 in Ethiopia
int months = ethiopia.Calendar.GetMonthsInYear(year);
for (int i = 1; i <= months; i++) {
    Console.WriteLine(ethiopia.Calendar.GetDaysInMonth(year, i));
}

然后,因为它是第 13 个月,有五天或几天

DateTime time = new DateTime(2002, 13, 5, ethiopia.Calendar);

将是合法的。

如果由于某种原因不起作用,您还可以查看如何使用越南农历上的这个 CodeProject 创建自定义日历作为示例。

于 2010-02-03T14:33:21.037 回答
0

我用这个作为解决方案。

您可以在数据表中添加一个单独的列来说明额外的天数……然后按两列对数据进行排序。例如:这是一个先按 Column1 然后按 Column2 降序排序的示例表:

RegDate----------------EpaDate

12/30/09--------------- 1/5/2010 12/30/09----------------1/4/ 2010 12/30/09----------------1/3/2010 12/30/09----------------1/ 2/2010 12/30/09-------------------------------- 1/1/2010 12/30/09---------------- --NULL 12/29/09-----------------NULL 12/28/09-----------------无效的

于 2010-02-04T13:01:41.507 回答