是否可以让日期数据类型接受 13 作为一个月和 30 作为所有月份?
Posted
技术标签:
【中文标题】是否可以让日期数据类型接受 13 作为一个月和 30 作为所有月份?【英文标题】:Is it possible to make a date datatype accept 13 as a month and 30 for all months? 【发布时间】:2010-02-03 14:11:46 【问题描述】:我在埃塞俄比亚,我们有 13 个月的时间。其中 12 个月有 30 天,第 13 个月有 5 天或 6 天。我想使用BindingSource
排序方法按日期对数据进行排序。但要做到这一点,我需要将我的日期字段设置为日期数据类型。当我将DataType
设置为日期时,我无法输入一些值,例如月份值 13 和第二个月的日值 30。
我想要的只是让我的应用程序接受 13 作为一个月和 30 作为所有月份的一天,这样我就可以按日期对数据进行排序。是否可以通过为我的应用程序设置文化或通过其他方式来做到这一点?
【问题讨论】:
您使用什么语言/框架? (例如 VB.Net、Java 等) 究竟是什么阻止了您进入 13?是数据库还是其他代码? 我将数据库字段设置为字符串,没关系!但是我在数据集设计器上将数据表的字段设置为最新。它说无法在 Me.Table1TableAdapter.Fill(Me.Database2DataSet.Table1) 的日期列中存储 13062000 【参考方案1】:理论上,您可以加载与埃塞俄比亚语言/国家相对应的CultureInfo
。 Ethiopia 的母语似乎是 Amharic,其 ISO 639 短代码为“am”,埃塞俄比亚的 ISO 3166 国家代码为“ET”。因此,埃塞俄比亚的正确culture code 似乎是“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));
然后,as it is the 13th month that has five or days
DateTime time = new DateTime(2002, 13, 5, ethiopia.Calendar);
是合法的。
如果由于某种原因不起作用,您还可以查看如何使用 CodeProject on the Vietnamese Lunar Calendar 作为示例创建自定义日历。
【讨论】:
埃塞俄比亚编号系统令人着迷,因为它没有零:blogs.msdn.com/michkap/archive/2005/02/01/364376.aspx 如何更改数据表?我的意思是数据表不接受来自数据库的数据。 尝试将DataTable.Locale
属性设置为代表“am-ET”文化的CultureInfo
实例。我不知道这会奏效,但这是尝试的第一件事。问题是DataTable
仍将使用InvariantCulture
来实现其绝大多数功能。
设置数据表的区域设置没有任何改变。 “am-ET”也不是有效的文化名称。埃塞俄比亚似乎不在caltureinfo文化列表中。你能告诉我如何创建一个自定义日历,你给我的链接不清楚。【参考方案2】:
我用这个作为解决方案。
您可以在数据表中添加一个单独的列来说明额外的天数...然后按两列对数据进行排序。例如:这是一个先按 Column1 然后按 Column2 降序排序的示例表:
RegDate----------------EpaDate
12/30/09--------------- 2010 年 1 月 5 日 12/30/09----------------1/4/2010 12/30/09----------------1/3/2010 12/30/09----------------1/2/2010 12/30/09----------------1/1/2010 2009 年 12 月 30 日-------空 2009 年 12 月 29 日-----------------NULL 12/28/09-----------------NULL
【讨论】:
以上是关于是否可以让日期数据类型接受 13 作为一个月和 30 作为所有月份?的主要内容,如果未能解决你的问题,请参考以下文章
java 给月份3月和该月1日是星期二,求该月最后一个工作日的日期 如何实现