web-dev-qa-db-fra.com

Convertir la chaîne temporelle en DateTime en c #

Comment puis-je obtenir un DateTime basé sur une chaîne

par exemple: si j'ai mytime = "14:00"

Comment puis-je obtenir un objet DateTime avec la date actuelle comme date, sauf si l'heure actuelle est déjà 14:00:01, la date doit alors être celle du lendemain.

9
Harts

Ceci est aussi simple que d’analyser une DateTime avec un format exact.

Réalisable avec

var dateStr = "14:00";
var dateTime = DateTime.ParseExact(dateStr, "H:mm", null, System.Globalization.DateTimeStyles.None);

La méthode DateTime.ParseExact() (lien msdn) vous permet simplement de passer la chaîne de format souhaitée comme chaîne d'analyse pour renvoyer la structure DateTime. Désormais, la partition Date de cette chaîne sera définie par défaut sur date d'aujourd'hui alors qu'aucune partie date n'est fournie.

Répondre à la deuxième partie 

Comment puis-je obtenir un objet DateTime avec la date actuelle comme date, à moins que Heure actuelle ne soit déjà 14:00:01, la date doit alors être celle du lendemain.

C’est aussi simple, car nous savons que DateTime.ParseExact renverra la date du jour (nous n’avons pas fourni de partie date), nous pouvons comparer notre date analysée à DateTime.Now. Si DateTime.Now est supérieur à notre date analysée, nous ajoutons 1 jour à notre date analysée.

var dateStr = "14:00";

var now = DateTime.Now;
var dateTime = DateTime.ParseExact(dateStr, "H:mm", null, System.Globalization.DateTimeStyles.None);

if (now > dateTime)
    dateTime = dateTime.AddDays(1);
10
Nico

Vous pouvez utiliser DateTime.TryParse() : pour convertir la représentation sous forme de chaîne spécifiée d'une date et d'une heure en son équivalent DateTime et renvoyer une valeur indiquant si la conversion a réussi.

string inTime="14:00";
DateTime d;

if(DateTime.TryParse(inTime,out d))
{
   Console.WriteLine("DateTime : " + d.ToString("dd-MM-yyyy HH:mm:SS"));
} 

Exemple courant ici

2
sujith karivelil

Il y a un constructeur datetime pour 

public DateTime(
    int year,
    int month,
    int day,
    int hour,
    int minute,
    int second
)

Alors, analysez la chaîne pour trouver les heures, les minutes et les secondes, puis transmettez-la à ce constructeur avec les autres paramètres fournis par Datetime.Now.Day, etc.

1
user1385417

Je pense que vous voulez faire quelque chose comme ça:

string myTime = "14:00";            
var v = myTime.Split(":".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
DateTime obj = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, int.Parse(v[0]), int.Parse(v[1]), DateTime.Now.Second);
1
Ankit Bhardwaj