web-dev-qa-db-fra.com

Conversion du format de chaîne en date / heure en mm / jj / aaaa

Je dois convertir une chaîne au format mm/jj/aaaa en variable datetime, mais elle doit rester au format mm/jj/aaaa.

string strDate = DateTime.Now.ToString("MM/dd/yyyy");

S'il vous plaît aider.

34
Aviral Kumar

Vous recherchez la méthode DateTime.Parse() ( article MSDN )

Alors tu peux faire:

var dateTime = DateTime.Parse("01/01/2001");

Ce qui vous donnera un objet typé DateTime.

Si vous devez spécifier le format de date que vous souhaitez utiliser, utilisez DateTime.ParseExact _ ( article MSDN )

Ce que vous utiliseriez dans une situation comme celle-ci (où vous utilisez un format de date de style britannique):

string[] formats= { "dd/MM/yyyy" }
var dateTime = DateTime.ParseExact("01/01/2001", formats, new CultureInfo("en-US"), DateTimeStyles.None);
43
Darbio

Vous avez besoin d'une majuscule M pour la partie mois.

string strDate = DateTime.Now.ToString("MM/dd/yyyy");

Les minuscules m permettent de produire (et d’analyser) une minute (telle que h:mm).

par exemple. une chaîne de date complète pourrait ressembler à ceci:

string strDate = DateTime.Now.ToString("MM/dd/yyyy h:mm");

Notez la différence majuscule/minuscule mM.


De même, si vous traitez toujours avec la même chaîne de format de date/heure, vous pouvez simplifier la tâche en les écrivant en tant que méthodes d'extension C #.

public static class DateTimeMyFormatExtensions
{
  public static string ToMyFormatString(this DateTime dt)
  {
    return dt.ToString("MM/dd/yyyy");
  }
}

public static class StringMyDateTimeFormatExtension
{
  public static DateTime ParseMyFormatDateTime(this string s)
  {
    var culture = System.Globalization.CultureInfo.CurrentCulture;
    return DateTime.ParseExact(s, "MM/dd/yyyy", culture);
  }
}

EXEMPLE: Traduction entre DateTime/string

DateTime now = DateTime.Now;

string strNow = now.ToMyFormatString();
DateTime nowAgain = strNow.ParseMyFormatDateTime();

Notez qu’il existe un moyen [~ # ~] non [~ # ~] de stocker des informations de format personnalisé DateTime à utiliser comme default comme dans .NET, la mise en forme de chaînes dépend en grande partie de la culture actuellement définie, c'est-à-dire.

System.Globalization.CultureInfo.CurrentCulture.

La seule façon simple de procéder consiste à appliquer une méthode d'extension personnalisée.

En outre, l’autre solution simple consiste à utiliser une autre classe "conteneur" ou "wrapper" pour votre DateTime, c’est-à-dire une classe spéciale avec explicit operator défini qui se traduit automatiquement vers et à partir de DateTime/string. Mais c'est un territoire dangereux.

30
chakrit

Vous pouvez aussi changer le format en faisant cela

string fecha = DateTime.Now.ToString(format:"dd-MM-yyyy");

// cela change le "/" pour le "-"

2

J'ai fait comme ça

var datetoEnter= DateTime.ParseExact(createdDate, "dd/mm/yyyy", CultureInfo.InvariantCulture);
2
DropAndTrap

Solution

DateTime.Now.ToString("MM/dd/yyyy", CultureInfo.InvariantCulture)
2

Ce qui suit fonctionne pour moi.

string strToday = DateTime.Today.ToString("MM/dd/yyyy");
0
Pabitra Dash