02 |
Далее — вызываем одно из необходимых свойств: Days, Hours, Minutes, Seconds, Milliseconds и получаем необходимое значение: |
|
03 | VB.NET |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 Sub Main() ... 'Value of TimeSpan: 5268.22:05:16 ... |
|
04 | На заметку: |
Разница между свойствами TotalDays, TotalHours, TotalMinutes, TotalSeconds, TotalMilliseconds и Days, Hours, Minutes, Seconds, Milliseconds заключается в том, что, например, свойство Days (тип Integer) вернет количество полных дней полученного интервала, в то время, как свойство TotalDays (тип Double) вернет весь временной интервал выраженный в днях и их долях.
|
|
05 |
Годы С годами сложнее. |
|
06 | На заметку: |
В году 365,25 дней. Поэтому каждый 4 год — високосный — 366 дней, вместо обычных 365 дней, для того, чтобы компенсировать четверть дня в каждом году:
(365 + 365 + 365 + 366 (високосный)) / 4 = 365,25
|
|
07 |
Лирическое отступление — вспомним, что большинство задач связанных с определением количества лет между двумя датами сводится к определению возраста человека. И если человек родился 1 января 1990 года в 10:23:00, то полных 25 лет ему наступит 1 января 2015 года в 10:23:01. |
|
08 |
Правильный, «академический» метод будет заключаться в использовании стандартных методов и свойств: |
|
09 | VB.NET |
1 2 3 4 5 6 7 8 9 Dim date1 As DateTime = New DateTime(1990, 1, 1, 10, 23, 0)
Dim date2 As DateTime = New DateTime(2015, 1, 1, 10, 23, 1)
Dim interval As TimeSpan = date2.Subtract(date1)
Dim age As Integer = CInt(interval.TotalDays / 365.25)
Console.WriteLine(String.Format("age:{0}, totaldays/365.25 - {1}", age, interval.TotalDays / 365.25))
' age:25, interval/365.25: 24,9993155689913 |
|
10 |
Некоторые из вас, не заподозрив подвоха скажут — все верно, но... попробуйте изменить date2 — на 2 минуты раньше, т.е. формально полных 25 лет ещё не будет, но: |
|
11 | VB.NET |
1 2 3 4 Dim date1 As DateTime = New DateTime(1990, 1, 1, 10, 23, 0)
Dim date2 As DateTime = New DateTime(2015, 1, 1, 10, 22, 59)
' ... ... |
|
12 |
В этом месте ряды «некоторых» из предыдущего абзаца пополнятся — мол, я придираюсь, но придется парировать: |
|
13 | VB.NET |
1 2 3 4 Dim date1 As DateTime = New DateTime(1990, 1, 1, 10, 23, 0)
Dim date2 As DateTime = New DateTime(2014, 10, 1, 10, 23, 0) ' Дата меньше на 3 месяца от дня рождения
' ... ... |
|
14 |
Можно конечно начать работать с цифрами после запятой, но это уже занятие неблагодарное, поэтому предлагаю свою функцию — банальную и простую: |
|
15 | VB.NET |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 Sub Main() ... Function ПолучитьВозраст(dateStart As DateTime, dateEnd As DateTime) As Integer ... ' age:24, date2: 01.01.2015 10:22:00 ... |
|
16 |
Месяцы На удивление с месяцами, все ещё сложнее. Сложно на вскидку привести пример задачи, которая бы требовала расчета количества полных месяцев. Расчет усугубляется ещё и тем, что месяц величина крайне непостоянная — и его длина может варьироваться от 28 до 31 дня. |
|
17 |
С одной стороны, можно определить для задачи константу — в месяце 30,5 дней, с другой — придумать алгоритм расчета (сколько в месяце попугаев). В любом случае зависит от задачи, которую необходимо решить. Выше информации предостаточно. |
|
19 |
Похожие запросы:
|
|