Как мне добавить раз в C #? - PullRequest
0 голосов
/ 22 июня 2009

Как добавить время в C #? Например:

Time = "14:20 pm" +  "00:30 pm"

Ответы [ 6 ]

18 голосов
/ 22 июня 2009

Если вы хотите добавить 30 минут к указанному DateTime, вы можете использовать AddMinutes .

TestTime.AddMinutes(30);

Другой способ сделать это:

DateTime TestTime = DateTime.Parse("22 Jun 2009 14:20:00");
// Add 30 minutes
TestTime = TestTime + TimeSpan.Parse("00:30:00");
4 голосов
/ 22 июня 2009
 TimeSpan t1 = new TimeSpan(14, 20,0);
 TimeSpan t2 = new TimeSpan(0,30,0);
 Console.Out.WriteLine(t1 + t2);
4 голосов
/ 22 июня 2009

Вы хотите конвертировать оба раза в объекты TimeSpan.

Это предоставит вам явный доступ к значениям Часов / Минут каждый раз, и вы сможете добавлять их вместе.

См. TimeSpan от MSDN.

2 голосов
/ 22 июня 2009

Попробуйте это (хотя 0:30 вечера не имеет смысла):

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine(new StringTime("14:20 pm").Add(new StringTime("0:30 pm")));
        Console.WriteLine(new StringTime("15:00 pm").Add(new StringTime("0:30 pm")));
        Console.WriteLine(new StringTime("5:00am").Add(new StringTime("12:00pm")));
    }
}

class StringTime
{
    public int Hours { get; set; }
    public int Minutes { get; set; }
    public bool IsAfternoon { get; set; }

    public StringTime(string timeString)
    {
        IsAfternoon = timeString.Contains("pm");
        timeString = timeString.Replace("pm", "").Replace("am", "").Trim();

        Hours = int.Parse(timeString.Split(':')[0]);
        Minutes = int.Parse(timeString.Split(':')[1]);
    }

    public TimeSpan ToTimeSpan()
    {
        if (IsAfternoon)
        {
            if (Hours < 12)
            {
                Hours += 12;
            }
        }
        return new TimeSpan(Hours, Minutes, 00);
    }

    public TimeSpan Add(StringTime time2)
    {
        return this.ToTimeSpan().Add(time2.ToTimeSpan());
    }
}

Вывод (значение перед точкой - дни):

1,02: 50: 00
1,03: 30: 00
17: 00: 00

1 голос
/ 22 июня 2009

Вы не можете добавить их, так же, как вы не можете добавить «14:20 PM» и красный цвет. Вы можете добавить время и интервал времени (14:20 + 30 минут) или два интервала времени (2 часа + 30 минут). Но вы не можете добавить два раза.

Чтобы сделать это еще яснее, подумайте, что произойдет, если вы могли бы добавить два раза: 14.20 + 00:30 (EST) = 23.20 + 09:30 (UTC)

0 голосов
/ 18 декабря 2016

Этот код позволяет пользователю добавлять время.

using System;
using System.Collections.Generic;

// ...
class Program
{
    static void Main(string[] args)
    {
        Console.ForegroundColor = ConsoleColor.Cyan;
        TimeCalculator time = new TimeCalculator();
        time.InsertTime(0, 0, 59);
        time.InsertTime(0, 0, 1);

        int[] totaltime = time.GetTime();

        Console.WriteLine($"Hours: {totaltime[0]}");
        Console.WriteLine($"Minutes: {totaltime[1]}");
        Console.WriteLine($"Seconds: {totaltime[2]}");

        Console.ForegroundColor = ConsoleColor.Gray;
        Console.Write("Press any key to quit . . . ");
        Console.ReadKey(true);
    }
}

class TimeCalculator
{
    int _hours;
    int _minutes;
    int _seconds;
    List<TimeCalculator> timelist = new List<TimeCalculator>();

    public void InsertTime(int hours, int minutes, int seconds)
    {
        timelist.Add(new TimeCalculator { _hours = hours, _minutes = minutes, _seconds = seconds });
        AddTime();
    }

    public void AddTime()
    {
        int sumHours = 0;
        int sumMinutes = 0;
        int sumSeconds = 0;

        foreach (var item in timelist)
        {
            sumHours += item._hours;
            sumMinutes += item._minutes;
            sumSeconds += item._seconds;
        }

        _hours = sumHours + (sumMinutes / 60);
        _minutes = (sumMinutes + (sumSeconds / 60)) % 60;
        _seconds = sumSeconds % 60;

        // % 60 restarts clock at 60
        // / 60 gives value at 60
    }

    public int[] GetTime()
    {
        return new int[] { _hours, _minutes, _seconds };
    }
}
...