2010-02-03 2 views
9

Ich bin in Äthiopien und wir haben 13 Monate. 12 von ihnen mit 30 Tagen und 13. Monat mit 5 oder 6 Tagen. Ich möchte meine Daten nach Datum mit der Sortiermethode BindingSource sortieren. Dazu muss ich in meinem Datumsfeld einen Datumsdatentyp festlegen. Wenn ich die DataType bis heute einstelle, kann ich einige Werte wie 13 für den Monatswert und 30 für den Tageswert des zweiten Monats nicht eingeben.Ist es möglich, einen Datums-Datentyp als Monat 13 und 30 für alle Monate zu akzeptieren?

Was ich will, ist nur meine Anwendung 13 als Monat und 30 als einen Tag für alle Monate zu akzeptieren, so dass ich meine Daten nach Datum sortieren kann. Ist es möglich, dies durch Setzen von Kultur für meine Bewerbung oder auf andere Weise zu tun?

+0

Welche Sprache/Framework verwenden Sie? (ex. VB.Net, Java usw.) –

+0

ich benutze vb.net –

+0

Was, genau, hält Sie davon ab, eine 13 einzugeben? Ist es die Datenbank oder ein anderer Code? – NotMe

Antwort

3

In der Theorie könnten Sie die CultureInfo entsprechend Sprache/Land für Äthiopien laden. Es scheint, dass die Muttersprache in Ethiopia ist Amharic, die ISO 639 Kurzcode von "am" hat und der ISO 3166 Ländercode für Äthiopien ist "ET". So scheint es, dass das korrekte culture code für Äthiopien "am-ET" ist. Versuchen Sie Folgendes.

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

Und dann as it is the 13th month that has five or days

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

wäre legal.

Wenn das aus irgendeinem Grund nicht funktioniert, können Sie auch einen eigenen Kalender erstellen, indem Sie CodeProject on the Vietnamese Lunar Calendar als Beispiel verwenden.

+1

Das äthiopische Nummerierungssystem ist faszinierend, da es keine Null hat: http://blogs.msdn.com/michkap/ archive/2005/02/01/364376.aspx – jason

+0

Wie kann ich die Datentabelle ändern? Ich meine, es ist die Datentabelle, die die Daten aus der Datenbank nicht akzeptiert. –

+0

Versuchen Sie, die Eigenschaft 'DataTable.Locale' auf eine Instanz von 'CultureInfo' zu setzen, die die Kultur 'am-ET' darstellt. Ich weiß nicht, dass das funktionieren wird, aber es ist das erste, was ich versuchen muss. Das Problem ist, dass die 'DataTable' immer noch die' InvariantCulture' für den Großteil ihrer Funktionalität verwendet. – jason

0

Ich habe dies als eine Lösung verwendet.

Sie könnten eine separate Spalte in Ihrer Datentabelle hinzufügen, um die zusätzlichen epagomenalen Tage zu berücksichtigen ... dann sortieren Sie Ihre Daten nach beiden Spalten. zum Beispiel: Hier wäre zuerst von Column1 dann durch Spalte2 eine Beispieltabelle absteigend sortiert:

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

12/30/09- -------------- 1/5/2010 30.12.2009 ---------------- 1/4/2010 12/30/09 ---------------- 1/3/2010 30/12/09 ---------------- 1/2/2010 30.12.2009 ---------------- 01.01.2010 30.12.2009 ----------------- -NULL 29.12.09 ------------------ NULL 28.12.09 ----------------- -NULL

Verwandte Themen