95 votes

Convertir la valeur de l'intervalle de temps au format "hh:mm Am/Pm" en utilisant C#

J'ai une valeur stockée dans une variable de type System.TimeSpan comme suit.

System.TimeSpan storedTime = 03:00:00;

Puis-je le re-stocker dans une autre variable de type String comme suit ?

String displayValue = "03:00 AM";

Et si storedTime La variable a la valeur de

storedTime = 16:00:00;

alors il doit être converti en :

String displayValue = "04:00 PM";

1voto

Nandha kumar Points 535
Parse timespan to DateTime. For Example.    
//The time will be "8.30 AM" or "10.00 PM" or any time like this format.
    public TimeSpan GetTimeSpanValue(string displayValue) 
        {   
            DateTime dateTime = DateTime.Now;
                if (displayValue.StartsWith("10") || displayValue.StartsWith("11") || displayValue.StartsWith("12"))
                          dateTime = DateTime.ParseExact(displayValue, "hh:mm tt", CultureInfo.InvariantCulture);
                    else
                          dateTime = DateTime.ParseExact(displayValue, "h:mm tt", CultureInfo.InvariantCulture);
                    return dateTime.TimeOfDay;
                }

0voto

STO Points 4597

Tout d'abord, vous devez convertir l'intervalle de temps en structure DateTime :

var dt = new DateTime(2000, 12, 1, timeSpan.Hours, timeSpan.Minutes, timeSpan.Seconds)

Ensuite, vous devez convertir la valeur en chaîne de caractères avec Temps court format

var result = dt.ToString("t"); // Convert to string using Short Time format

0voto

user3408322 Points 89

Parce que cette situation est aussi ennuyeuse qu'elle est courante... J'ai créé une classe d'aide, que j'ai publiée dans un paquet NuGet. Il peut s'agir d'une méthode privée et peut être utilisé dans les vues MVC ainsi que dans le code C# back-end.

public static string AsTimeOfDay(TimeSpan timeSpan, TimeSpanFormat timeSpanFormat = TimeSpanFormat.AmPm)
        {
            int hours = timeSpan.Hours;
            int minutes = timeSpan.Minutes;
            string AmOrPm = "AM";
            string returnValue = string.Empty;

            if (timeSpanFormat == TimeSpanFormat.AmPm)
            {
                if (hours >= 12)
                {
                    AmOrPm = "PM";
                }

                if (hours > 12)
                {
                    hours -= 12;
                }

                TimeSpan timeSpanAmPm = new TimeSpan(hours, minutes, 0);

                returnValue = timeSpanAmPm.ToString(@"h\:mm") + " " + AmOrPm;
            }
            else
            {
                returnValue = timeSpan.ToString(@"h\:mm");
            }

            return returnValue;
        }

enter image description here

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X