web-dev-qa-db-fra.com

Comment convertir DateTime vers/à partir d'un format de chaîne spécifique (dans les deux sens, par exemple, le format indiqué est "aaaaMMjj")?

Je rencontre un problème pour convertir une date/heure au format chaîne mais je ne parviens pas à la convertir au format "yyyyMMdd".

Mon code est:

string tpoc = refSubClaim.BenefitsFolder.BenefitFolderIdNumber.ToString();
string[] tpocinfo = Regex.Split(tpoc,";");

for (int i = 0; i < tpocinfo.Length; i++)
{
    switch (i)
    {
        case 0:
        {
            string[] tpoc2 = Regex.Split(tpocinfo[0], ",");
            claimantAuxillaryRecord.TPOCDate2 = tpoc2[0].ToString();
            claimantAuxillaryRecord.TPOCAmount2 = Convert.ToDecimal(tpoc2[1]);
            claimantAuxillaryRecord.FundingDelayedBeyondTPOCStartDate2 = tpoc2[2].ToString();
        }
        break;
119
Ashutosh

si vous avez une date dans une chaîne au format "ddMMyyyy" et que vous voulez la convertir en "yyyyMMdd", procédez comme suit:

DateTime dt = DateTime.ParseExact(dateString, "ddMMyyyy", 
                                  CultureInfo.InvariantCulture);
dt.ToString("yyyyMMdd");
209
Falle1234

Analyse DateTime:

Pour analyser un DateTime, appliquez l'une des méthodes suivantes:

Vous pouvez aussi utiliser try-parse pattern:

En savoir plus sur Chaînes de format de date et d’heure personnalisées .

Conversion de DateTime en chaîne:

Pour retourner un DateTime sous forme de chaîne au format "yyyyMMdd", vous pouvez utiliser ToString method.

  • Exemple d'extrait de code: string date = DateTime.ToString("yyyyMMdd");
  • Notez que les majuscules M se rapportent aux mois et que les minuscules m correspondent à des minutes.

Ton cas:

Dans votre cas, en supposant que vous ne souhaitiez pas gérer le scénario lorsque la date est d'un format différent ou manquant, il serait plus pratique d'utiliser ParseExact:

string dateToParse = "20170506";
DateTime parsedDate = DateTime.ParseExact(dateToParse, 
                                          "yyyyMMdd",
                                          CultureInfo.InvariantCulture);
61
Dariusz Woźniak

Vous pouvez convertir votre chaîne en une valeur DateTime comme ceci:

DateTime date = DateTime.Parse(something);

Vous pouvez convertir une valeur DateTime en une chaîne mise en forme comme ceci:

date.ToString("yyyyMMdd");
35
SLaks

Chaîne au format de date aaaa-MM-jj: Exemple:

TxtCalStDate.Text = Convert.ToDateTime(objItem["StartDate"]).ToString("yyyy/MM/dd");   
11
NSiva

Si vous voulez avoirDATEcomme chaîne avecHEUREaussi. On peut faire comme ça:

//Date and Time is taking as current system Date-Time    
DateTime.Now.ToString("yyyyMMdd-HHMMss");
10
Anish

Utilisez DateTime.TryParseExact() si vous souhaitez faire correspondre un format de date spécifique 

   string format = "yyyyMMdd"; 
    DateTime dateTime;
    DateTime.TryParseExact(dateString, format, CultureInfo.InvariantCulture,
                                             DateTimeStyles.None, out dateTime);
6
Mudassir Hasan

Vous pouvez utiliser DateTime.TryParse() au lieu de DateTime.Parse().
Avec TryParse() vous avez une valeur de retour si elle a réussi et avec Parse() vous devez gérer une exception

5
peter

C'est le moyen simple de convertir au format

 DateTime.Now.ToString("yyyyMMdd");
3
manoj kumar

non c'est une chaîne avec aaaa/mm/jj et j'en ai besoin au format aaaaMMjj

Si vous avez seulement besoin de supprimer les barres obliques d'une chaîne, ne les remplacez-vous pas?

Exemple:

myDateString = "2013/03/28";
myDateString = myDateString.Replace("/", "");

myDateString devrait maintenant être "20130328".

Moins d'overkill :)

3
SergioMSCosta

Faites simplement comme ça.

string yourFormat = DateTime.Now.ToString("yyyyMMdd");

Bonne codage :)

3
Prashant-Systematix

En fonction des noms de propriété, il semble que vous tentiez de convertir une chaîne en date par affectation:

claimantAuxillaryRecord.TPOCDate2 = tpoc2[0].ToString();

Cela est probablement dû à la culture actuelle de l'interface utilisateur et par conséquent, il ne peut pas interpréter correctement la chaîne de date lorsqu'il est affecté.

2
Peter

De C # 6: 

var dateTimeUtcAsString = $"{DateTime.UtcNow:o}";

Le résultat sera: "2019-01-15T11: 46: 33.2752667Z"

0
ben alfasi

Vous pouvez essayer ces codes 

claimantAuxillaryRecord.TPOCDate2  = Convert.ToDateTime(tpoc2[0]).ToString("yyyyMMdd"); 

Ou 

claimantAuxillaryRecord.TPOCDate2 = Convert.ToDateTime(tpoc2[0]).ToString("yyyyMMdd hh:mm:ss"); 
0
A. Zalonis

Une façon plus simple que je trouvais tout en cherchant cette réponse également;

string date = DateTime.Now.ToString("yyyyMMdd", System.Globalization.CultureInfo.GetCultureInfo("en-US"));
0