c # время вычислений - PullRequest
       2

c # время вычислений

1 голос
/ 25 августа 2010

Кто-нибудь знает, как рассчитать общее количество часов между 2 раза?Например, если рабочий работает в 8:00 и в 16:00, я хотел бы знать, что в десятичном виде это 8,0 часов и 8:00 часов.

Я использую C # framework 2.0.Переменные, которые содержат время входа и выхода, имеют тип string.

TY

Ответы [ 5 ]

9 голосов
/ 25 августа 2010
        DateTime start = new DateTime(2010, 8, 25, 8, 0, 0);
        DateTime end = new DateTime(2010, 8, 25, 16, 0, 0);
        Console.WriteLine((end - start).TotalHours);

для строк:

        DateTime start = DateTime.Parse("8:00");
        DateTime end = DateTime.Parse("16:00");
        Console.WriteLine((end - start).TotalHours);
1 голос
/ 25 августа 2010

Я придумала этот метод перехода на летнее время.Функция корректна как для UTC, так и для местных часовых поясов.Если DateTimeKind равно Unspecified на любом из входов, то возвращаемое значение не определено (это причудливый способ сказать, что оно может быть неверным).

private double TotalHours(DateTime earliest, DateTime latest)
{
    earliest = (earliest.Kind == DateTimeKind.Local) ? earliest.ToUniversalTime() : earliest;
    latest = (latest.Kind == DateTimeKind.Local) ? latest.ToUniversalTime() : latest;
    return (latest - earliest).TotalHours;
}
0 голосов
/ 25 августа 2010

Выезд TimeSpan.TotalHours:

TimeSpan difference = datetime2 - datetime1;
double totalHours = difference.TotalHours;
0 голосов
/ 25 августа 2010
System.DateTime punchIn = new System.DateTime(2010, 8, 25, 8, 0, 0);

System.DateTime punchOut = new System.DateTime(2010, 8, 25, 16, 0, 0);

System.TimeSpan diffResult = punchOut.Subtract(punchIn);
0 голосов
/ 25 августа 2010

Вы можете сделать это путем вычитания двух дат и использования свойства TotalHours полученного значения Timespan. Вот пример:

    DateTime start = new DateTime(2010, 8, 25, 8, 0, 0);
    DateTime end = new DateTime(2010, 8, 25, 16, 0, 0);
    int hours = end.Subtract(start).TotalHours;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...