2010-02-03 24 views
9

Tôi đang ở Ethiopia và chúng tôi có 13 tháng. 12 người trong số họ có 30 ngày mỗi tháng và 13 tháng với 5 hoặc 6 ngày. Tôi muốn sắp xếp dữ liệu của mình theo ngày bằng phương pháp sắp xếp BindingSource. Nhưng để làm điều đó, tôi cần phải đặt trường ngày của tôi là kiểu dữ liệu ngày tháng. Khi tôi đặt số DataType cho đến nay, tôi không thể nhập một số giá trị như 13 cho giá trị tháng và 30 cho giá trị ngày của tháng thứ 2.Có thể tạo một kiểu dữ liệu ngày chấp nhận 13 là một tháng và 30 cho tất cả các tháng không?

Điều tôi muốn chỉ làm cho ứng dụng của tôi chấp nhận 13 là một tháng và 30 là một ngày cho tất cả các tháng, để tôi có thể sắp xếp dữ liệu của mình theo ngày. Có thể làm như vậy bằng cách thiết lập văn hóa cho ứng dụng của tôi hoặc bằng một số phương tiện khác không?

+0

bạn đang sử dụng ngôn ngữ/khung nào? (ví dụ: VB.Net, Java, v.v.) –

+0

Tôi đang sử dụng vb.net –

+0

Điều gì, chính xác, ngăn bạn nhập 13? Nó là cơ sở dữ liệu hoặc một số mã khác? – NotMe

Trả lời

3

Về lý thuyết, bạn có thể tải lên số CultureInfo tương ứng với ngôn ngữ/quốc gia cho Ethiopia. Có vẻ như ngôn ngữ mẹ đẻ trong EthiopiaAmharic có mã ngắn "am" theo tiêu chuẩn ISO 639 và mã quốc gia ISO 3166 của Ethiopia là "ET". Do đó, có vẻ như chính xác culture code cho Ethiopia là "am-ET". Vì vậy, hãy thử như sau.

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

Và sau đó, as it is the 13th month that has five or days

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

sẽ là hợp pháp.

Nếu vì một số lý do không hoạt động, bạn cũng có thể xem cách tạo lịch tùy chỉnh bằng cách sử dụng ví dụ CodeProject on the Vietnamese Lunar Calendar này làm ví dụ.

+1

Hệ thống đánh số Ethiopic là hấp dẫn vì nó không có số không: http://blogs.msdn.com/michkap/ lưu trữ/2005/02/01/364376.aspx – jason

+0

Làm cách nào để tôi có thể thực hiện việc này để thay đổi dữ liệu? Tôi có nghĩa là nó là datatable đó là không chấp nhận các dữ liệu đến từ cơ sở dữ liệu. –

+0

Thử đặt thuộc tính 'DataTable.Locale' thành một thể hiện của' CultureInfo' đại diện cho văn hóa "am-ET". Tôi không biết điều đó sẽ hiệu quả, nhưng đó là điều đầu tiên để thử. Vấn đề là 'DataTable' sẽ vẫn sử dụng' InvariantCulture' cho phần lớn chức năng của nó. – jason

0

Tôi đã sử dụng giải pháp này làm giải pháp.

bạn có thể thêm một cột riêng trong dữ liệu có thể định giá của bạn vào tài khoản cho các ngày phụ thêm ... sau đó sắp xếp dữ liệu của bạn theo cả hai cột. ví dụ: ở đây sẽ là một bảng mẫu được sắp xếp giảm dần đầu bởi COLUMN1 sau đó bởi --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

Các vấn đề liên quan