2010-02-03 13 views
9

Estoy en Etiopía y tenemos 13 meses. 12 de ellos con 30 días cada uno y 13 meses con 5 o 6 días. Quiero ordenar mis datos por fecha usando el método de clasificación BindingSource. Pero para hacer eso, necesito configurar mi campo de fecha como un tipo de datos de fecha. Cuando configuro el DataType hasta la fecha, no puedo ingresar algunos valores como 13 para el valor del mes y 30 para el valor del día del segundo mes.¿Es posible hacer que una fecha de tipo de datos acepte 13 como mes y 30 para todos los meses?

Lo que quiero es solo hacer que mi aplicación acepte 13 como un mes y 30 como un día para todos los meses, para que pueda ordenar mis datos por fecha. ¿Es posible hacerlo configurando cultura para mi aplicación o por algún otro medio?

+0

¿qué idioma/marco estás usando? (por ejemplo, VB.Net, Java, etc.) –

+0

estoy usando vb.net –

+0

¿Qué es exactamente lo que le impide ingresar a 13? ¿Es la base de datos o algún otro código? – NotMe

Respuesta

3

En teoría, podría cargar el CultureInfo correspondiente al idioma/país de Etiopía. Parece que el idioma nativo en Ethiopia es Amharic que tiene un código corto ISO de "am" y el código de país ISO 3166 para Etiopía es "ET". Por lo tanto, parece que el culture code correcto para Etiopía es "am-ET". Por lo tanto, intente lo siguiente.

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

Y luego, as it is the 13th month that has five or days

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

sería legal.

Si por alguna razón eso no funciona, también podría ver cómo crear un calendario personalizado usando este CodeProject on the Vietnamese Lunar Calendar como ejemplo.

+1

El sistema de numeración de Ethiopic es fascinante ya que no tiene un cero: http://blogs.msdn.com/michkap/ archive/2005/02/01/364376.aspx – jason

+0

¿Cómo puedo hacer esto para cambiar la tabla de datos? Quiero decir que es la tabla de datos la que no acepta los datos provenientes de la base de datos. –

+0

Intenta establecer la propiedad 'DataTable.Locale' en una instancia de' CultureInfo' que representa la cultura "am-ET". No sé si funcionará, pero es lo primero que debes intentar. El problema es que 'DataTable' todavía usará' InvariantCulture' para la gran mayoría de su funcionalidad. – jason

0

Lo usé como una solución.

puede agregar una columna separada en su tabla de datos para tener en cuenta los días extra epagomenal ... luego ordenar sus datos por ambas columnas. por ejemplo: aquí sería una tabla de ejemplo ordenados descendiendo por primera vez por Columna1 luego por Columna2:

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

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

Cuestiones relacionadas