2012-04-20 2 views
1

Мой следующий код получает 2 датыдисплей все даты даны даты начала и окончания

foreach records $get_times { 
     lassign $records start_date stop_date 
     puts [clock format [clock scan $start_date] \ 
      -format {%d %b}] 
     puts [clock format [clock scan $stop_date] \ 
      -format {%d %b}] 
} 

Есть ли способ я могу показать все даты между start_tdate и stop_date. Что-то вроде:

puts "<tr><td>the $start_date</td>the next Date</td><td>....</td><td>the $stop_date</td>" 
+1

Какую версию Tcl вы используете? –

ответ

1

Вы можете использовать способность clock scan «s использовать„Английские“временные рамки, чтобы получить то, что вы ищете. Например:

set start_ts [clock scan $start_date] 
set end_ts [clock scan $stop_date] 
for {set current $start_ts} {$current < $end_ts} {set current [clock scan "+1 day" -base $current} { 
    puts [clock format $current -format {%d %b}] 
} 
3

Предполагая, что вы имеете в виду вы хотите печатать каждый день между датой_начал и stop_date, я хотел бы использовать часов добавить в цикле.

set start_date [clock scan {2012-04-20 00:00:00} -format {%Y-%m-%d %H:%M:%S}] 
set stop_date [clock scan {2012-04-24 00:00:00} -format {%Y-%m-%d %H:%M:%S}] 
while {$start_date<$stop_date} { 
    set start_date [clock add $start_date 1 day] 
    puts $start_date 
} 
+1

Вероятно, лучше добавить «1 день» для перехода на переходный период с летним днем. –

+0

На самом деле, необходимо: полночь 4 ноября по восточному времени + 24 часа = 11 вечера 4 ноября –

+0

@glennjackman хорошая точка! Я не слишком беспокоился о приращении времени, поскольку оригинальный плакат даже не указывал, какой промежуток они хотели – TrojanName

Смежные вопросы