Obtenir la date ou l'heure uniquement à partir d'un objet DateTime

Réponses:

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
la source
1
Je ne pensais pas que c'était si évident! :)
gideon
value.Date + ""renvoie le date 12:00:00 AM. Utilisez value.Date.ToShortDateString()pour éviter cela.
eu lieu
39

Vous pouvez également utiliser DateTime.Now.ToString("yyyy-MM-dd")pour la date et DateTime.Now.ToString("hh:mm:ss")pour l'heure.

Joshua Smith
la source
1
Bon appel. C'est ce que j'obtiens pour répondre à la hâte. Marc Gravell l'a cloué.
Joshua Smith
5
Je dirais que vous recherchez une chaîne assez souvent pour que cette réponse ait de la valeur, cependant.
GWLlosa
22

Vous pouvez utiliser Instance.ToShortDateString () pour la date
et Instance.ToShortTimeString () pour l'heure pour obtenir la date et l'heure de la même instance.

Shail Nautiyal
la source
2
var currentDateTime = dateTime.Now();
var date=currentDateTime.Date;
Muhammad Kashif
la source
4
vous pouvez également utiliser yourDateObj.ToShortDateString();
Muhammad Kashif
-2

Parfois, vous voulez avoir votre GridView aussi simple que:

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

Vous ne souhaitez spécifier aucun BoundField, vous souhaitez simplement lier votre grille à DataReader. Le code suivant m'a aidé à formater DateTime dans cette situation.

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

Les résultats présentés ici. Formatage DateTime

Alexandre Tchernosvitov
la source
4
vous avez des compétences malades bro
Ruchan