работа с датами

 
Добрый день.
Как то меня в расстройство ввергло...

1. это правда, что Print(dt);, где dt есть datetime выводит только какие то безумные числа, как я подозреваю количество прошедших секунд от неизвестно чего до моего dt?

2. Очень хочу получить цену открытия бара H1 в понедельник ТЕКУЩЕЙ НЕДЕЛИ, в 14 часов дня

#define SEC_PER_DAY    86400 //стока секунд в дне
#define SEC_PER_HOUR   3600  //стока секунд в часе
 
dt1 = iTime(NULL, PERIOD_H1, 0) - (DayOfWeek()-1)*SEC_PER_DAY - (Hour() + 24 - h1)*SEC_PER_HOUR; //дата а-ля количество секунд; h1 = 14 (часов)
n1 = iBarShift(NULL, PERIOD_H1, dt1, true); //бар, который соответствует дате
val = iOpen(NULL, PERIOD_H1, n1); //цена открытия

Print(n1) вообще выводит "-1",

хотя я пробовал на более простом примере:
datetime d1 = iTime(NULL, PERIOD_H1, 0);
datetime d2 = d1 - 60*60*24;
 
int n = iBarShift(NULL, PERIOD_H1, d2, false);
if (n != -1) {Print("OpenPrice is " , iOpen(NULL, PERIOD_H1, n));} else {Print("n = -1");}
в нем все выводится то, что надо.
Помогите разобраться?
 
Попробуйте
TimeToStr(iTime(NULL,PERIOD_H1,0))
 

Спасибо, а с датами кроме того способа что я привел никак больше нельзя работать? Я имею ввиду есть дата в строковом формате, можно ли из нее отнять неск. дней, часов, минут без всяких мега чисел и обратно?

 
int TimeHour(Time[0]) //Возвращает час для указанного времени.
int TimeDay(Time[0]) //Возвращает день месяца (1 - 31) для указанной даты.

все есть, читайте в справочнике
Причина обращения: