2014-10-02 4 views
-1

Я пытаюсь напечатать отформатированные даты, используя элементы массива в хэш-карта (records_array["START_TIME_SEC"])Печать даты из нескольких элементов в массиве с помощью Time.strptime

Первый элемент массива: records_hash["START_TIME_SEC"][0] который равен : 1405583947

Печать жёстко прописанные время работает просто отлично: Time.strptime('1405583947', '%s') напечатает: 2014-07-17 7:59:07 +0000 (Это верно)

Далее, установив жёстко прописанные время переменной как струна прекрасно работает:

stime = '1405583947' 
Time.strptime(stime, '%s') 

напечатает: 2014-07-17 7:59:07 +0000 (опять же, правильно!)

Если я вытащить один раз из массива и попытаться использовать его в Time.strptime это работает просто отлично:

stime2 = records_array["START_TIME_SEC"][0].to_s 
Time.strptime(stime2, '%s') 

напечатает: 2014-07-17 7:59:07 +0000 (правильно еще раз)

Однако при попытке перебрать массив и распечатать нужные для всех элементов Я получаю сообщение об ошибке:

<% ([email protected]_array.count).each do|i| %> 
<tr class="post"> 

    <td> 
    <% stime = @records_hash["START_TIME_SEC"][i].to_s %> 
    <%= Time.strptime(stime, '%s') %> 
    </td> 
</tr> 
<% end %> 

Ошибка: неправильный формат strptime - `% s'

+1

для начинающих у вас есть ошибка в вашем итераторе. вам нужно '(0 .. (array.count - 1))', но рубиновый способ сделать это - @records_hash ["START_TIME_SEC"]. each {| x | ...} ' – xlembouras

+0

Также вы ссылаетесь на' @ records_array' и '@ records_hash' - эти оба объекта или это опечатка, потому что ваш другой код показывает' @records_array ["START_TIME_SEC"] '. – engineersmnky

+0

Array.count - 1 решил проблему. Вау, мне так глупо за то, что ты так долго застрял. Спасибо огромное! – 12nm

ответ

0

+1 к xlembouras' комментарий об использовании @records_array.each { |x| ... } Кроме того, кажется, что вы используете records_hash на вашем фрагменте кода вместо records_array. Это может быть реальная проблема.