Pobieranie daty lub godziny tylko z obiektu DateTime

Odpowiedzi:

134
var day = value.Date; // a DateTime that will just be whole days
var time = value.TimeOfDay; // a TimeSpan that is the duration into the day
Marc Gravell
źródło
1
Nie sądziłem, że to takie oczywiste! :)
gideon
value.Date + ""zwraca date 12:00:00 AM. Użyj, value.Date.ToShortDateString()aby tego uniknąć.
hesed
39

Możesz również użyć DateTime.Now.ToString("yyyy-MM-dd")jako daty i DateTime.Now.ToString("hh:mm:ss")godziny.

Joshua Smith
źródło
1
Dobra decyzja. To właśnie dostaję, odpowiadając w pośpiechu. Marc Gravell to zrobił.
Joshua Smith
5
Powiedziałbym jednak, że na tyle często szukasz łańcucha, aby ta odpowiedź miała wartość.
GWLlosa
22

Możesz użyć Instance.ToShortDateString () jako daty
i Instance.ToShortTimeString (), aby uzyskać datę i godzinę z tego samego wystąpienia.

Shail Nautiyal
źródło
2
var currentDateTime = dateTime.Now();
var date=currentDateTime.Date;
Muhammad Kashif
źródło
4
możesz też użyć yourDateObj.ToShortDateString();
Muhammad Kashif
-2

Czasami chcesz, aby widok GridView był tak prosty, jak:

  <asp:GridView ID="grid" runat="server" />

Nie chcesz określać żadnego BoundField, po prostu chcesz powiązać swoją siatkę z DataReader. Poniższy kod pomógł mi sformatować DateTime w tej sytuacji.

protected void Page_Load(object sender, EventArgs e)
{
  grid.RowDataBound += grid_RowDataBound;
  // Your DB access code here...
  // grid.DataSource = cmd.ExecuteReader(CommandBehavior.CloseConnection);
  // grid.DataBind();
}

void grid_RowDataBound(object sender, GridViewRowEventArgs e)
{
  if (e.Row.RowType != DataControlRowType.DataRow)
    return;
  var dt = (e.Row.DataItem as DbDataRecord).GetDateTime(4);
  e.Row.Cells[4].Text = dt.ToString("dd.MM.yyyy");
}

Wyniki pokazane tutaj. Formatowanie daty i godziny

Alexander Chernosvitov
źródło
4
masz chore umiejętności bracie
Ruchan