Это произойдет, когда ${proposal.creationDate}
фактически вернет String
вместо полноправного Date
. Исправьте его соответствующим образом.
private Date creationDate;
public Date getCreationDate() {
return creationDate;
}
Если вы действительно не можете изменить тип для какой-то неочевидной причины, вам нужно сначала проанализировать его с помощью
.
Но это простой хак.
Не связанный с проблемой, часы должны быть представлены HH
не hh
. См. Также SimpleDateFormat
javadoc . Год 3911 вместо 2011 в распечатке также предполагает, что вы использовали устаревший конструктор / методы f10 для его создания.
for i in $(seq 1 $END); do echo $i; done
редактирование: Я предпочитаю seq
по другим методам, потому что я могу на самом деле помнить его;)
Можно использовать
for i in $(seq $END); do echo $i; done
Это хорошо работает в bash
:
END=5
i=1 ; while [[ $i -le $END ]] ; do
echo $i
((i = i + 1))
done
Используя seq
прекрасно как предложенный Jiaaro. Diablo мира предложила, чтобы цикл Bash постарался не называть подпроцесс с дополнительным преимуществом того, чтобы быть большей памятью дружественным, если $END является слишком большим. Zathrus определил типичную ошибку в реализации цикла, и также подсказал, что с тех пор i
текстовая переменная, непрерывные преобразования туда и сюда, числа выполняются со связанным замедлением.
Это - улучшенная версия цикла Bash:
typeset -i i END
let END=5 i=1
while ((i<=END)); do
echo $i
…
let i++
done
, Если единственная вещь, которую мы хотим, эти echo
, тогда мы могли записать echo $((i++))
.
ephemient преподавал мне что-то: Bash позволяет for ((expr;expr;expr))
конструкции. Так как я никогда не читал целую страницу справочника для Bash (как, я сделал с оболочкой Korn (ksh
) страница справочника, и это было давным-давно), я пропустил это.
Так,
typeset -i i END # Let's be explicit
for ((i=1;i<=END;++i)); do echo $i; done
, кажется, самый эффективный памятью путь (не будет необходимо выделить память для потребления seq
вывод, который мог быть проблемой, если КОНЕЦ является очень большим), хотя, вероятно, не “fastest”.
eschercycle отметил что { .. b} нотация Bash работает только с литералами; верный, соответственно к руководству Bash. Можно преодолеть это препятствие с синглом (внутренним) fork()
без exec()
(как имеет место с вызовом seq
, какое быть другим изображением требует fork+exec):
for i in $(eval echo "{1..$END}"); do
И eval
и echo
Bash builtins, но fork()
требуется для замены команды (эти $(…)
конструкция).
seq
метод является самым простым, но Bash имеет встроенную арифметическую оценку.
END=5
for ((i=1;i<=END;i++)); do
echo $i
done
# ==> outputs 1 2 3 4 5 on separate lines
for ((expr1;expr2;expr3));
работы конструкции точно так же, как for (expr1;expr2;expr3)
в C и подобных языках, и как другой ((expr))
случаи, Bash рассматривает их как арифметику.
--simplify-by-decoration
опция к журналу мерзавца.
– Jakub Narębski
9 September 2010 в 22:47