Kolumna DateTime w DataGridView

Odpowiedz Nowy wątek
2012-03-19 10:34

Rejestracja: 8 lat temu

Ostatnio: 4 lata temu

0

Mam kolumne DateTime w kontrolce DataGridView.
Kiedy wywolam:
string data = dataGridView1.CurrentRow.Cells[4].Value.ToString();
to otrzymuje np. 2012-05-28 00:00:00
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

Pozostało 580 znaków

2012-03-19 12:47
Moderator

Rejestracja: 12 lat temu

Ostatnio: 4 godziny temu

Lokalizacja: Wrocław

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.


"HUMAN BEINGS MAKE LIFE SO INTERESTING. DO YOU KNOW, THAT IN A UNIVERSE SO FULL OF WONDERS, THEY HAVE MANAGED TO INVENT BOREDOM."

Pozostało 580 znaków

2012-03-19 13:20

Rejestracja: 8 lat temu

Ostatnio: 4 lata temu

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...

Pozostało 580 znaków

2012-03-19 15:14
Moderator

Rejestracja: 12 lat temu

Ostatnio: 4 godziny temu

Lokalizacja: Wrocław

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?


"HUMAN BEINGS MAKE LIFE SO INTERESTING. DO YOU KNOW, THAT IN A UNIVERSE SO FULL OF WONDERS, THEY HAVE MANAGED TO INVENT BOREDOM."
edytowany 1x, ostatnio: somekind, 2012-03-19 15:14

Pozostało 580 znaków

2012-03-20 10:19

Rejestracja: 8 lat temu

Ostatnio: 4 lata temu

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 ????

Pozostało 580 znaków

2012-03-20 15:45

Rejestracja: 9 lat temu

Ostatnio: 6 lat temu

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


Pozdro & poćwicz!

Pozostało 580 znaków

Odpowiedz

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