2010-07-09 8 views
7

Considerare ho un datatable dt ed ha una colonna DateofOrder,È possibile formattare una colonna di data di un datatable?

DateofOrder 
07/01/2010 
07/05/2010 
07/06/2010 

voglio formattare queste date in DateOfOrder colonna per questo

DateofOrder 
01/Jul/2010 
05/Jul/2010 
06/Jul/2010 

Ogni suggerimento ..

+0

Come li stai visualizzando? –

+0

@Dean cosa non posso ottenere il tuo punto ... –

+0

@Dean voglio formattare queste date e sostituirlo nel datatable .. –

risposta

11

La cosa migliore da fare sarebbe assicurarsi che il DataTable sia digitato e questa colonna sia di tipo DateTime. Quindi quando si passa effettivamente a stampare i valori sullo schermo, è possibile impostare il formato in quel punto senza incollare i dati sottostanti.

Se questo non è fattibile, ecco un metodo di estensione uso spesso:

public static void Convert<T>(this DataColumn column, Func<object, T> conversion) 
{ 
    foreach(DataRow row in column.Table.Rows) 
    { 
     row[column] = conversion(row[column]); 
    } 
} 

Si potrebbe utilizzare nella vostra situazione, come:

myTable.Columns["DateOfOrder"].Convert(
    val => DateTime.Parse(val.ToString()).ToString("dd/MMM/yyyy")); 

Funziona solo su DataTable senza tipo (ad esempio, il il tipo di colonna deve essere oggetto, o eventualmente stringa).

+0

ho usato la seconda opzione ma 'Convert' non è un metodo su DataColumn di un datatable. –

+0

Ecco perché ha il metodo di estensione. Devi aggiungere il primo metodo che usa al tuo programma e quindi dovresti essere in grado di usare convert. –

+0

@Pandiya se noterai la parte in grassetto della risposta, è un * metodo di estensione * che devi aggiungere, motivo per cui l'ho scritto qui. –

0

.ToString ("dd/MMM/yyyy") (supponendo che i dati siano di tipo DateTime)

0

Basta esporre la risposta di Saille qui:

Per un DateTime, il formato non è un problema. Un DateTime è in realtà il numero di zecche che si contano a partire da mezzanotte, 1 ° gennaio 1 ° A. Quindi, in realtà, è solo un lungo. La formattazione diventa un problema solo quando arriva il momento di convertirlo in una stringa. Quindi, dovrai andare a occuparti della formattazione sia quando la estrai dalla tabella di dati e sei pronta per l'output, sia la metti nella tabella di dati come una stringa (che non consiglierei, per la flessibilità scopi). La formattazione può essere eseguita con la chiamata .ToString sul DateTime suggerito da saille, .ToString("dd/MMM/yyyy")

Problemi correlati