BST
не распознается как имя часового пояса. Он используется как аббревиатура в выводе, но его нельзя использовать для обозначения часового пояса. Большинство программ не проверяют имена часовых поясов и по умолчанию молча используют GMT, если имя часового пояса не распознано.
Аббревиатуры, такие как BST, CET, EST и т. д., не всегда хорошо определены, -и иногда неоднозначны (Североамериканское или Австралийское восточное стандартное время? ). Они имеют смысл только в данном регионе, тогда как конфигурация часового пояса обычно предназначена для использования во всем мире. Кроме того, такая аббревиатура, как BST, на самом деле не обозначает часовой пояс, а только время, которое находится в определенном часовом поясе в течение части года (Британия, пока действует летнее время ). Таким образом, вы должны использовать недвусмысленные обозначения, большинство из которых следуют образцу континент/город. В типичных системах Linux и, я думаю, во многих других вариантах Unix вы можете увидеть, какие сокращения доступны, заглянув в каталог /usr/share/zoneinfo
.
Поэтому вместо использования GMT
зимой и BST
летом используйте Europe/London
.
Вам не хватает z?
$ echo a zaz | grep -P '(\ba\b) \B\1\B'
- no output -
$ echo a zaz | grep -P '(\ba\b) z\B\1\Bz'
a zaz
Точно так же, как \b
не включает дополнительные символы в круглых скобках, \B
также не соответствует дополнительным символам. Таким образом, в регулярном выражении нет ничего, что позволило бы сопоставить z вокруг a.