Другие языки программирования и технологии
Задачка для программистов
Как средствами Visual Basic или любой другой IDE конвертировать количество секунд с определенной даты в дату? Пример: Известна начальная дата - 01.01.1980 Известно количество секунд прошедших с начальной даты - 1235312566 Какая дата и время?
Sub Test()
Debug.Print DateAdd("S", 1235312566, "01.01.1980")
End Sub
Это в любой программе Microsoft Office можно сделать, на веб-страничке или создав файл с расширением VBS, только процедура вывода в тех случаях будет иная, а вот функция одна — DateAdd.
Ответ: 22.02.2019 14:22:46
Синтаксис
DateAdd(interval, number, date)
Синтаксис функции DateAdd содержит следующие именованные аргументы:
ЭлементОписание
intervalОбязательный. Строковое выражение, указывающее тип добавляемого временного интервала.
numberОбязательный. Числовое выражение, указывающее число временных интервалов, которое следует добавить. Оно может быть положительным (для получения более поздних дат) или отрицательным (для получения более ранних дат) .
dateОбязательный. Значение типа Variant (Date) или литерал даты, представляющий дату, к которой добавляется указанный временной интервал.
Значения
Ниже перечислены допустимые значения аргумента interval:
ЗначениеОписание
yyyyГод.
QКвартал.
mМесяц.
YДень года.
DДень месяца.
wДень недели.
wwНеделя.
HЧасы.
NМинуты.
SСекунды.
Дополнительные сведения
Функция DateAdd предназначена для добавления или вычитания указанного временного интервала из значения даты. Например, с помощью этой функции можно вычислить дату, на 30 дней более позднюю, чем текущая, или время, на 45 минут более позднее, чем текущее.
Для добавления дней к аргументу date можно задавать временной интервал как день года ("y"), день месяца ("d") или день недели ("w").
Функция DateAdd не возвращает неправильных дат. Следующее выражение добавляет один месяц к 31 января:
DateAdd("m", 1, "31-янв-95")
В данном случае будет возвращена дата 28-фев-95, а не 31-фев-95. Если в качестве аргумента date указать 31-янв-96, то возвращается дата 29-фев-96, поскольку 1996 год является високосным.
Если будет получена дата, более ранняя, чем 100 год (т. е. вычитаемый временной интервал содержит больше лет, чем исходное значение date), возникнет ошибка.
Если number не является значением типа Long, оно округляется до ближайшего целого числа перед выполнением операции.
Debug.Print DateAdd("S", 1235312566, "01.01.1980")
End Sub
Это в любой программе Microsoft Office можно сделать, на веб-страничке или создав файл с расширением VBS, только процедура вывода в тех случаях будет иная, а вот функция одна — DateAdd.
Ответ: 22.02.2019 14:22:46
Синтаксис
DateAdd(interval, number, date)
Синтаксис функции DateAdd содержит следующие именованные аргументы:
ЭлементОписание
intervalОбязательный. Строковое выражение, указывающее тип добавляемого временного интервала.
numberОбязательный. Числовое выражение, указывающее число временных интервалов, которое следует добавить. Оно может быть положительным (для получения более поздних дат) или отрицательным (для получения более ранних дат) .
dateОбязательный. Значение типа Variant (Date) или литерал даты, представляющий дату, к которой добавляется указанный временной интервал.
Значения
Ниже перечислены допустимые значения аргумента interval:
ЗначениеОписание
yyyyГод.
QКвартал.
mМесяц.
YДень года.
DДень месяца.
wДень недели.
wwНеделя.
HЧасы.
NМинуты.
SСекунды.
Дополнительные сведения
Функция DateAdd предназначена для добавления или вычитания указанного временного интервала из значения даты. Например, с помощью этой функции можно вычислить дату, на 30 дней более позднюю, чем текущая, или время, на 45 минут более позднее, чем текущее.
Для добавления дней к аргументу date можно задавать временной интервал как день года ("y"), день месяца ("d") или день недели ("w").
Функция DateAdd не возвращает неправильных дат. Следующее выражение добавляет один месяц к 31 января:
DateAdd("m", 1, "31-янв-95")
В данном случае будет возвращена дата 28-фев-95, а не 31-фев-95. Если в качестве аргумента date указать 31-янв-96, то возвращается дата 29-фев-96, поскольку 1996 год является високосным.
Если будет получена дата, более ранняя, чем 100 год (т. е. вычитаемый временной интервал содержит больше лет, чем исходное значение date), возникнет ошибка.
Если number не является значением типа Long, оно округляется до ближайшего целого числа перед выполнением операции.
Это решается в EXCEL и очень просто.
У тебя начальная дата - 01.01.1980. Время: 00:00:00. С этого момента прошло 1235312566 сек. Делим с остатком:
1. 1235312566/60 = 20588542 мин и 46 сек, дальше
2. 20588542/60 = 343142 час и 22 мин.
3. 343142/24 = 14297 сут и 14 час
Дальше сложнее
4. 14297/365 = 39 лет и 62 сут. На самом деле 52 сут, потому что 1980 г. был високосный, и после него за 39 лет было 10 високосных лет, поэтому надо отнять 10 сут.
Дальше Раскладываешь по месяцам:
5. 52 сут = 31+21 = 21 февраля
В итоге получаем: 21 февраля 2020 г, 14 час, 22 мин 46 сек.
Заметь, что 2020 - это 11-ый високосный год от 1980, но мы его не считаем, потому что конечное число - 21 февраля. Если бы было еще +10 сут, то мы бы посчитали 29 дней в феврале, и получили бы 2 марта.
1. 1235312566/60 = 20588542 мин и 46 сек, дальше
2. 20588542/60 = 343142 час и 22 мин.
3. 343142/24 = 14297 сут и 14 час
Дальше сложнее
4. 14297/365 = 39 лет и 62 сут. На самом деле 52 сут, потому что 1980 г. был високосный, и после него за 39 лет было 10 високосных лет, поэтому надо отнять 10 сут.
Дальше Раскладываешь по месяцам:
5. 52 сут = 31+21 = 21 февраля
В итоге получаем: 21 февраля 2020 г, 14 час, 22 мин 46 сек.
Заметь, что 2020 - это 11-ый високосный год от 1980, но мы его не считаем, потому что конечное число - 21 февраля. Если бы было еще +10 сут, то мы бы посчитали 29 дней в феврале, и получили бы 2 марта.
делите число секунд.. . на минуты, часы, сутки...
Василий Фокин
а дальше?
и какая дата получится в конце по вашему?
и какая дата получится в конце по вашему?
Вэл
не забываем про високосные годы, переходы на зимнее/летнее время
Получить дату в виде FILETIME, с ней можно желать любые действия
детская задача делите число секунд
Василий Фокин
минуты = делим секунды на 60
часы = делим секнуды на 60 и ещё на 60
дни = делим секнуды на 60 и ещё на 60 и ещё на 60
толк какой?
мне нужно знать полную дату, а не количество прошедших дней, часов, минут или секнуд...
часы = делим секнуды на 60 и ещё на 60
дни = делим секнуды на 60 и ещё на 60 и ещё на 60
толк какой?
мне нужно знать полную дату, а не количество прошедших дней, часов, минут или секнуд...
23.02.2099
14часов 22минуты 46 сек ено если в 0:0:0
14часов 22минуты 46 сек ено если в 0:0:0
Похожие вопросы
- Простая задачка для программистов: Как найти самый частый элемент массива?
- Задачка для программистов посильная?
- Задачка для программистов. Поможете? Для программеров это проще простого (я знаю это), а вот я чёто не понимаю ваще.
- Паскаль, не трудная задачка, помогите начинающему программисту!
- программисты для вас будет шоком смотрите (это не очередная просьба решить задачку)
- Еще вопросы к программистам :)...точнее задачки...
- Вопрос к программистам. Легкая задачка по информатике на языке Паскаль.
- Программисты C#, помогите. задачка элементарная
- Задачка для умеющих шевелить мозгами. (Программистов я вообще считаю самыми умными)
- Задачка №4 для умеющих шевелить мозгами. (Программистов я вообще считаю самыми умными)
Плюсую всем, чем могу!