是否可以使日期数据类型接受 13 作为月份,30 表示所有月份?

发布于 2024-08-20 06:48:12 字数 283 浏览 1 评论 0原文

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

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

I am in Ethiopia and we have 13 months. 12 of them with 30 days each and 13th month with 5 or 6 days. I want to sort my data by date using the BindingSource sort method. But to do that, I need to set my date field a date data type. When I set the DataType to date, I can't enter some values like 13 for the month value and 30 for day value of 2nd month.

What I want is just to make my application accept 13 as a month and 30 as a day for all months, so that I can sort my data by date. Is it possible to do so by setting culture for my application or by some other means?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

笨死的猪 2024-08-27 06:48:12

理论上,您可以加载与埃塞俄比亚语言/国家/地区相对应的CultureInfo埃塞俄比亚的母语似乎是阿姆哈拉语,其 ISO 639 短代码为“am”,埃塞俄比亚的 ISO 3166 国家代码为“ET”。因此,埃塞俄比亚的正确文化代码似乎是“上午-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 为例。

In theory, you could load up the CultureInfo corresponding to language/country for Ethiopia. It appears that the native language in Ethiopia is Amharic which has ISO 639 short code of "am" and the ISO 3166 country code for Ethiopia is "ET". Thus, it appears that the correct culture code for Ethiopia is "am-ET". Thus, try the following.

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));
}

And then, as it is the 13th month that has five or days

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

would be legal.

If for some reason that doesn't work, you could also look at how to create a custom calendar using this CodeProject on the Vietnamese Lunar Calendar as an example.

梅窗月明清似水 2024-08-27 06:48:12

我用这个作为解决方案。

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

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

12/30/09--------- ------ 2010 年 1 月 5 日
2009年12月30日----------------2010年1月4日
2009年12月30日----------------2010年1月3日
2009年12月30日----------------2010年1月2日
2009年12月30日----------------2010年1月1日
2009 年 12 月 30 日------------------NULL
2009年12月29日------------------NULL
2009年12月28日------------------NULL

I used this as a solution.

you could add a separate column in your datatable to account for the extra epagomenal days... then sort your data by both columns. for instance: here would be a sample table sorted descending first by Column1 then by 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------------------NULL

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文