Laravel / Moment — Как определить, создан ли created_at во время перехода на летнее время?

#javascript #php #laravel #momentjs #dst

#javascript #php #laravel #momentjs #летнее время

Вопрос:

Как мне определить, была ли сохранена запись в моей базе данных ( laravel ) во время перехода на летнее время, используя created_at поле?

Я пытаюсь вычислить разницу во времени между тем, когда запись была сохранена, и сейчас, чтобы я мог сделать, может показать что-то вроде 3 hours ago или 49 minutes ago . Это работало нормально, пока пару недель назад Великобритания не перешла на летнее время, и теперь все время увеличивается на 1 час.

Я использую moment, чтобы показать результат следующим образом;

 getElapsedString(from) {
   return moment(from).fromNow();
}
  

Данные хранятся в моей базе данных в следующем формате, и это то, что передается в вышеуказанную функцию как from ;

2019-04-10 09:27:48

Я ничего не делаю с датами, когда они сохраняются. Это обрабатывается Laravel.

Ответ №1:

Внутри config/app.php существует

 'timezone' => ''
  

вы можете установить его на:

 'timezone' => 'America/New_York'
  

Он установит часовой пояс по умолчанию и сохранит created_at с этим часовым поясом с текущим дневным светом

Комментарии:

1. Спасибо за ответ. Насколько мне известно, это будет работать только для новых записей в будущем. Он не будет обновлять записи, уже имеющиеся в базе данных.

2. я боюсь, что это не сработает, потому что он не знает, в каком часовом поясе вы ввели эту временную метку. в будущем вы можете использовать $table->dateTimeTz(‘created_at’); для сохранения с указанием часового пояса