Получить произвольное значение даты при помощи aqDateTime
#1
Отправлено 28 февраля 2012 - 12:28
На форме есть два поля: "дата начала" (значение равно текущей дате) и "дата окончания".
С текущей все понятно, она получается так: aqDateTime.Today().
Можно ли каким-то образом для "даты окончания" получить значение равное, например, текущая дата + 1 год?(365 дней?)
То есть если сегодня 28.02.2012 - получить надо 28.02.2013.
#2
Отправлено 28 февраля 2012 - 13:44
// JScript
newDate = aqDateTime.AddMonths(today, 12);
Метода aqDateTime.AddYears в TestComplete почему-то нет :(
Upd: aqDateTime.SetDateElements кинет ошибку, если исходная дата - 29 февраля.
А aqDateTime.AddMonths(29 февраля, 12) вернет 1 марта.
Сообщение отредактировал modbear: 05 марта 2012 - 15:20
#3
Отправлено 28 февраля 2012 - 13:52
#4
Отправлено 28 февраля 2012 - 13:52
#5
Отправлено 28 февраля 2012 - 14:07
А если високосный год? :)Надо использовать
newDate = aqDateTime.AddDays(today, 365)
#6
Отправлено 28 февраля 2012 - 14:12
А если високосный год? :)Надо использовать
newDate = aqDateTime.AddDays(today, 365)
Накосячил я...
Забудьте.
#7
Отправлено 05 марта 2012 - 12:37
- получаем текущий год в виде строки
year = aqConvert.DateTimeToFormatStr(aqDateTime.Now(), "%Y")
- переводим строку в число (вторым параметром лучше сразу указать десятичную систему:))
var i = parseInt(q, 10);
- прибавляем единицу.
i++
на выходе получаем текущий год + 1
#8
Отправлено 05 марта 2012 - 13:40
Ну вот тупой пример прибавления года:
- получаем текущий год в виде строки
year = aqConvert.DateTimeToFormatStr(aqDateTime.Now(), "%Y")
- переводим строку в число (вторым параметром лучше сразу указать десятичную систему:))
var i = parseInt(q, 10);
- прибавляем единицу.
i++
на выходе получаем текущий год + 1
Замечание modbear по моему посту насчет високосного года навело на мысль, что просто добавлять 1 к году недостаточно.
А если текущая дата 29 февраля ?
#9
Отправлено 05 марта 2012 - 14:00
Ну вот тупой пример прибавления года:
- получаем текущий год в виде строки
year = aqConvert.DateTimeToFormatStr(aqDateTime.Now(), "%Y")
- переводим строку в число (вторым параметром лучше сразу указать десятичную систему:))
var i = parseInt(q, 10);
- прибавляем единицу.
i++
на выходе получаем текущий год + 1
Замечание modbear по моему посту насчет високосного года навело на мысль, что просто добавлять 1 к году недостаточно.
А если текущая дата 29 февраля ?
У меня кроме как шаманства с бубном и конвертацией нет мыслей.
Но вообще тогда ставим проверку (делим текущий год на 4) и если получается целое значение то текущий год високосный. и тогда ставим вторую проверку. номер месяца. если февраль (02), проверяем текущий день, если 29, то соответственно при прибавлении года, вычитаем или прибавляем день.
Тогда соответственно нам придется описанные выше действия выполнять не только для года но еще и для дня и месяца.
Но это, на самом деле, изврат дикий, и стоит ли ради одного дня раз в 4 года изобретать подобный велосипед.
#10
Отправлено 05 марта 2012 - 14:05
Если писать на Дельфи, тогда можно подсмотреть в его библиотеках функцию определения високосного года (4 года, 400 лет, 1000 лет).
#11
Отправлено 05 марта 2012 - 15:04
В TestComplete, кстати, для этого есть встроенная функция - aqDateTime.IsLeapYear.Если писать на Дельфи, тогда можно подсмотреть в его библиотеках функцию определения високосного года (4 года, 400 лет, 1000 лет).
#12
Отправлено 05 марта 2012 - 15:05
Ну вот тупой пример прибавления года:
- получаем текущий год в виде строки
year = aqConvert.DateTimeToFormatStr(aqDateTime.Now(), "%Y")
- переводим строку в число (вторым параметром лучше сразу указать десятичную систему:))
var i = parseInt(q, 10);
- прибавляем единицу.
i++
на выходе получаем текущий год + 1
Замечание modbear по моему посту насчет високосного года навело на мысль, что просто добавлять 1 к году недостаточно.
А если текущая дата 29 февраля ?
У меня кроме как шаманства с бубном и конвертацией нет мыслей.
Но вообще тогда ставим проверку (делим текущий год на 4) и если получается целое значение то текущий год високосный. и тогда ставим вторую проверку. номер месяца. если февраль (02), проверяем текущий день, если 29, то соответственно при прибавлении года, вычитаем или прибавляем день.
Тогда соответственно нам придется описанные выше действия выполнять не только для года но еще и для дня и месяца.
Но это, на самом деле, изврат дикий, и стоит ли ради одного дня раз в 4 года изобретать подобный велосипед.
вообще год=12 месяцев..тобишь если надо увеличить на год, достаточно aqDateTime.AddMonths(aqDateTime.Now(),12);
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных