Kolumna DateTime w DataGridView

0

Mam kolumne DateTime w kontrolce DataGridView.
Kiedy wywolam:
string data = dataGridView1.CurrentRow.Cells[4].Value.ToString();
to otrzymuje np. 2012-05-28 0000
a potrzebuje tylko date bez godzin....

Czy mozna to jakos zrobic w tej jednej linijce (tak by bylo najlepiej) lub tak zdefiniowac kolumne, zeby
opisywala tylko date bez godzin?

Najlepiej by w ogole bylo tak:

string data = skonwertuj_tak_zeby_wynikiem_bylo

28-05-2012, czyli dd-mm-yyyy

0

Obiekt DateTime ma np. metodę ToShortDateString(), która zgodnie z polskimi zasadami zwróci 2011-03-19. Jeśli chcesz mieć zapis po swojemu, to możesz użyć przeciążonej wersji ToString("dd-MM-yyyy"). Tylko najpierw musisz rzutować dataGridView1.CurrentRow.Cells[4].Value na DateTime.

0

Tak. Czytalem o tym sposobie. Tylko czy troche nie dziwne, ze jezeli mam w bazie danych zdefiniowany DateTime, wrzucam to na grida a nastepnie chcac odczytac z grida to dodaje mi te glupie zera?

To tez mozna zrobic prosciej po prostu nic nie zmieniajac dodac:
if (data.Length > 10)
data = data.Substring(0, 10)
end
i dalej tnac i sklejajac doprowadzic do formatu dd-mm-yyyy...

0
Rafal1001 napisał(a)

Tak. Czytalem o tym sposobie. Tylko czy troche nie dziwne, ze jezeli mam w bazie danych zdefiniowany DateTime, wrzucam to na grida a nastepnie chcac odczytac z grida to dodaje mi te glupie zera?

Nie. DateTime to typ przechowujący datę oraz czas, więc wywołanie ToString() wyświetla jedno i drugie.

To tez mozna zrobic prosciej po prostu nic nie zmieniajac dodac:
if (data.Length > 10)
data = data.Substring(0, 10)
end
i dalej tnac i sklejajac doprowadzic do formatu dd-mm-yyyy...

I to cięcie i sklejanie po swojemu ma być prostsze niż rzutowanie, a potem wywołanie gotowej i wielokrotnie przetestowanej metody, z której korzystają wszyscy na świecie?
W szczególności, czy trzydzieści linijek ifów i Substringów będzie krótsze niż jedna linijka normalnego rozwiązania?

0

Tak - rozumiem, ze takie ciecie jest bez sensu. Bardziej mi chodzi o to, ze - jak mi sie wydaje - nie ma protszej metody niz ta:

Convert.ToDateTime(dataGridView1.CurrentRow.Cells[5].Value).ToShortDateString();

Ale zostawmy juz to (dziala - niech zostanie) - wyniknal mi jeszcze jeden problem:
A jak zabezpieczyc powyzszy kod przed sytuacja gdy daty na gridzie nie ma? (= null)? bo mi sie wtedy wywala....
zrobic jakiegos if przed ta konwersja, czy jest jakas wlasciwosc, ktora daloby sie wkleic w ta linijke a sprawdzalyby
czy wartosc != NULL ????

0

Gdyby to był null to by konwersja poszła na DateTime.MinValue, zgodnie z tym: http://msdn.microsoft.com/en-us/library/ky38w316.aspx

1 użytkowników online, w tym zalogowanych: 0, gości: 1