|
|
|
Время и дата | ☑ | ||
|---|---|---|---|---|
|
0
DasTPID
06.10.10
✎
13:18
|
Кажется, перерыл весь инет, в том числе и этот форум - ответа не нашёл. Подскажите пожалуйста, где можно прочитать про функции работы с датой-временем в 1С 8. В частности, как переменной задать нужную дату-время, как раскидать переменную типа дата-время в много переменных день/месяц/год/час/минута/секунда, и как из набора переменных собрать дату обратно, ну и прочие. Спасибо.
|
|||
|
1
sapphire
06.10.10
✎
13:20
|
Конечно, надо в просторах интернета искать то, что лежит под носом.
Работаю синтакс-помощником. Дорого(с) |
|||
|
2
YHVVH
06.10.10
✎
13:21
|
Примитивные типы, системные функции
i Как явно указать нужную дату? '20050308' Дата(2005, 1, 1) Дата(1, 1, 1) Дата(2005, 1, 1, 10, 29, 50) ДАТАВРЕМЯ(2005, 01, 01) Как проверить дату на пустое значение? Если ДатаПроверяемая = Дата(1, 1, 1) Тогда Сообщить("Пустая дата!"); КонецЕсли; Как сравнить две даты (дни)? Если НачалоДня(Дата1) = НачалоДня(Дата2) Тогда Сообщить("Дни совпадают!"); КонецЕсли; Как прибавить к дате день, месяц? СледующийДень = ТекущаяДата() + 60 * 60 * 24; ДобавитьМесяц(Дата(2005, 1, 31), 1) ДобавитьМесяц(Дата(2005, 2, 28), -1) КонецМесяца(ДобавитьМесяц(Дата(2005, 2, 28), -1)) ФункцияПолучитьДень(ИсходнаяДата, КоличествоПрибавляемыхДней) Запрос = НовыйЗапрос(" |ВЫБРАТЬ | ДОБАВИТЬКДАТЕ(&ИсходнаяДата, ДЕНЬ, &Количество) как Дата"; Запрос.УстановитьПараметр("ИсходнаяДата", ИсходнаяДата); Запрос.УстановитьПараметр("Количество", КоличествоПрибавляемыхДней); ВозвратЗапрос.Выполнить().Выгрузить()[0].Дата; КонецФункции |
|||
|
3
YHVVH
06.10.10
✎
13:22
|
Кажется, перерыл весь инет, в том числе и этот форум - ответа не нашёл
пипец. |
|||
|
4
Kashemir
06.10.10
✎
13:32
|
СП->Общее описание языка->Примитивные типы->Дата
Дата (Date) Дата (Date) Описание: Значения данного типа содержит дату григорианского календаря (с 01 января 0001 года) и время с точностью до секунды. Литералы: Строка цифр, заключенная в одинарные кавычки вида: 'ГГГГММДДччммсс', где: ГГГГ - четыре цифры года (включая тысячелетие и век); ММ - две цифры месяца: ДД - две цифры даты; чч - две цифры часа (в 24-х часовом формате); мм - две цифры минут; сс - две цифры секунд; Во встроенном языке в литерале типа Дата обязательно должно задаваться значение года, месяца и дня. Для задания даты соответствующей началу отсчета достаточно указать '00010101'. Допускается при указании литералов типа Дата опускать последние символы (секунды, минуты, часы и т.д.). Это означает, что данные параметры будут равны нулю (для времени) или единице (для даты). В литерале даты допускается использование различных разделителей. |
|||
|
5
DasTPID
06.10.10
✎
14:17
|
(1) Где лежит? Нигде не нашёл. И тут никто подсказать не может.
(2) Как дату собрать из многих переменных - понял. Как разобрать дату на много переменных - тут не написано. (3) Пипец. Кажется, что справка для языка 1С специально запрятана так, чтобы никто не догадался, где её искать. (4) Читал когда искал. Ответов на свои вопросы не нашёл. Вот из (2) СледующийДень = ТекущаяДата() + 60 * 60 * 24 следует, что тип дата является переопределённым от целочисленного, причём единица в целочисленном - это одна секунда. Где об этом написано в справке? |
|||
|
6
sapphire
06.10.10
✎
14:24
|
(5) Считается, что все-таки человек хоть чуть-чуть знаком с базовыми понятиями.
Да время в компе - всего лишь некая целая величина в милисекундах |
|||
|
7
NcSteel
06.10.10
✎
14:25
|
(5) В справке написано. Прям под носом "С точностью до секунды"
|
|||
|
8
sapphire
06.10.10
✎
14:25
|
СледующийДень = ТекущаяДата() +86400
|
|||
|
9
sapphire
06.10.10
✎
14:26
|
Вернее так,
СледующийДень = НачалоДня(ТекущаяДата()) +86400; |
|||
|
10
sapphire
06.10.10
✎
14:26
|
(5) Ключевое слово "Синтакс-помощник".
|
|||
|
11
Irbis
06.10.10
✎
14:27
|
СледующийДень = КонецДня(ТекущаяДата())+1;
|
|||
|
12
DasTPID
06.10.10
✎
14:40
|
(6) Готов поспорить, что я знаком с базовыми понятиями, и чуть-чуть боле, чем чуть-чуть:) В WinAPI время в миллисекундах. А вот в VCL, например дата/время - тип double, причём единица - это сутки, так что если нужно прибавить час, то прибавляешь 1/24 (d = d + 1/24;) 1С пошли, как всегда, своим путём, и у них время в секундах. Пусть так, ладно. Как мне разобрать дату по многим переменным, чтобы узнать год/месяц/день/час/минуту/секунду? Аналог в дельфи:
var DT:TDateTime; y,m,d,h,m,s,ms:Word; ... DT := Now; DecodeDate(DT,y,m,d); DecodeTime(DT,h,m,s,ms); ShowMessage('Сейчас '+m+' минут') |
|||
|
13
sapphire
06.10.10
✎
14:46
|
(11) Тогда сложнее добавить неделю и организовать итератор диапазона дат :)
|
|||
|
14
Irbis
06.10.10
✎
14:48
|
(13) Зато сатанинское число дежать в памяти не надо.
|
|||
|
15
YHVVH
06.10.10
✎
14:48
|
(12) пипец
Встроенные функции языка Минута (Minute) Синтаксис: Минута(<Дата>) Параметры: <Дата> (обязательный) Тип: Дата. Исходная дата. Возвращаемое значение: Тип: Число. Минута в часе указанной даты. Описание: Определяет минуту в часе указанной даты. Пример: Сообщить(Минута(ТекущаяДата())); |
|||
|
16
strange2007
06.10.10
✎
14:49
|
(6) Системное, которое можно получить, в микросекундах
|
|||
|
17
YHVVH
06.10.10
✎
14:49
|
Встроенные функции языка
Секунда (Second) Синтаксис: Секунда(<Дата>) Параметры: <Дата> (обязательный) Тип: Дата. Исходная дата. Возвращаемое значение: Тип: Число. Секунда в указанной дате. Описание: Определяет секунду в указанной дате. Пример: Сообщить(Секунда(ТекущаяДата())); |
|||
|
18
hhhh
06.10.10
✎
14:50
|
(12) ты не поверишь. Функции Год(), Месяц(), День(), Час(), Минута(), Секунда()
|
|||
|
19
73
06.10.10
✎
14:50
|
(12)
Справка Встроенный язык Общее описание встроенного языка Встроенные функции Функции работы со значениями типа Дата |
|||
|
20
sapphire
06.10.10
✎
14:51
|
(12) По-поводу VCL - обратись к Borland.
Внутри компа, вне зависмости от ОС, время в милисекундах. |
|||
|
21
DasTPID
06.10.10
✎
15:04
|
(15)(17)(18) Спасибо!
(20) Unix Time, если не ошибаюсь, в секундах. И BIOS, если не ошибаюсь, также миллисекунды не хранит. |
|||
|
22
Операция 1Ы
06.10.10
✎
15:10
|
(0) на будущее ctrl+F1 или F1 в зависимости от ситуации.
|
|||
|
23
strange2007
06.10.10
✎
15:12
|
Внутри компа микросекунды бегают, миллисекунды уже для высокого уровня
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |