Cách thay đổi múi giờ trong Laravel 9

Một cách dễ dàng để đặt múi giờ cho người dùng trong ứng dụng của bạn và sau đó hiển thị ngày/giờ cho họ theo múi giờ địa phương của họ

Làm thế nào nó hoạt động

Gói này lắng nghe sự kiện

@displayDate[$post->created_at]
2 và sau đó sẽ tự động đặt một
@displayDate[$post->created_at]
3 trên mô hình
@displayDate[$post->created_at]
4 của bạn [được lưu trữ trong cơ sở dữ liệu]

Gói này sử dụng gói torann/geoip để tra cứu vị trí của người dùng dựa trên địa chỉ IP của họ. Gói này cũng trả về thông tin như đơn vị tiền tệ của người dùng và múi giờ của người dùng. Bạn có thể cấu hình riêng gói này nếu bạn yêu cầu

Cách sử dụng

Bạn có thể hiển thị ngày cho người dùng của mình theo múi giờ của họ bằng cách sử dụng

{{ Timezone::convertToLocal[$post->created_at] }}

Hoặc sử dụng chỉ thị lưỡi đẹp của chúng tôi

@displayDate[$post->created_at]

Thêm ví dụ bên dưới

Cài đặt

Kéo gói bằng Composer

composer require jamesmills/laravel-timezone

Xuất bản di chuyển cơ sở dữ liệu

php artisan vendor:publish --provider="JamesMills\LaravelTimezone\LaravelTimezoneServiceProvider" --tag=migrations

Chạy di chuyển cơ sở dữ liệu. Điều này sẽ thêm một cột

@displayDate[$post->created_at]
3 vào bảng
@displayDate[$post->created_at]
6 của bạn

php artisan migrate

ví dụ

Hiển thị ngày/giờ cho người dùng theo múi giờ của họ

Mặc định sẽ sử dụng định dạng

@displayDate[$post->created_at]
7 và sẽ không hiển thị múi giờ

@displayDate[$post->created_at]
1

Nếu muốn, bạn có thể đặt định dạng tùy chỉnh và cũng bao gồm một phiên bản đẹp của múi giờ

@displayDate[$post->created_at]
2

Sử dụng chỉ thị lưỡi dao

Làm cho cuộc sống của bạn dễ dàng hơn từng bước một

@displayDate[$post->created_at]
3

Và với định dạng tùy chỉnh

@displayDate[$post->created_at]
4

Lưu đầu vào của người dùng vào cơ sở dữ liệu trong UTC

Quá trình này sẽ lấy ngày/giờ, đặt thành múi giờ của người dùng, sau đó trả về dưới dạng UTC trong phiên bản Carbon

@displayDate[$post->created_at]
5

Cấu hình tùy chỉnh

Xuất bản tệp cấu hình là tùy chọn

@displayDate[$post->created_at]
0

Tin nhắn flash

Khi múi giờ đã được đặt, chúng tôi hiển thị thông báo flash, Theo mặc định, được định cấu hình để sử dụng thông báo flash mặc định của Laravel, đây là một số tích hợp tùy chọn

laracast/flash -

@displayDate[$post->created_at]
8

thủy ngânseries/hào nhoáng -

@displayDate[$post->created_at]
9

spatie/laravel-flash -

composer require jamesmills/laravel-timezone
0

mckenziearts/laravel-notify -

composer require jamesmills/laravel-timezone
1

usernotnull/tall-toasts -

composer require jamesmills/laravel-timezone
2

Để ghi đè cấu hình này, bạn chỉ cần thay đổi thuộc tính

composer require jamesmills/laravel-timezone
3 bên trong tệp cấu hình
composer require jamesmills/laravel-timezone
4 cho gói mong muốn. Bạn có thể tắt tin nhắn flash bằng cách cài đặt
composer require jamesmills/laravel-timezone
5

Ghi đè múi giờ hiện có trong cơ sở dữ liệu

Theo mặc định, múi giờ sẽ được ghi đè ở mỗi lần đăng nhập bằng múi giờ của người dùng hiện tại. Hành vi này có thể bị hạn chế chỉ cập nhật múi giờ nếu nó trống bằng cách đặt tùy chọn cấu hình

composer require jamesmills/laravel-timezone
6

Định dạng mặc định

Theo mặc định, định dạng ngày tháng sẽ là

@displayDate[$post->created_at]
7. Để ghi đè cấu hình này, bạn chỉ cần thay đổi thuộc tính
composer require jamesmills/laravel-timezone
8 bên trong tệp cấu hình
composer require jamesmills/laravel-timezone
4 để có định dạng mong muốn

Mảng tra cứu

Cấu hình mảng tra cứu này cho phép tìm địa chỉ từ xa của người dùng trong bất kỳ thuộc tính nào bên trong trình trợ giúp Laravel

php artisan vendor:publish --provider="JamesMills\LaravelTimezone\LaravelTimezoneServiceProvider" --tag=migrations
0, bằng bất kỳ phím nào. Lưu ý khi tìm thấy khóa bên trong thuộc tính, khóa đó sẽ được sử dụng. Theo mặc định, chúng tôi sử dụng thuộc tính
php artisan vendor:publish --provider="JamesMills\LaravelTimezone\LaravelTimezoneServiceProvider" --tag=migrations
1 với khóa
php artisan vendor:publish --provider="JamesMills\LaravelTimezone\LaravelTimezoneServiceProvider" --tag=migrations
2. Để ghi đè cấu hình này, bạn chỉ cần thay đổi thuộc tính
php artisan vendor:publish --provider="JamesMills\LaravelTimezone\LaravelTimezoneServiceProvider" --tag=migrations
3 bên trong tệp cấu hình
composer require jamesmills/laravel-timezone
4 để tra cứu mong muốn

Tin nhắn người dùng

Bạn có thể định cấu hình thông báo hiển thị cho người dùng khi múi giờ được đặt bằng cách thay đổi thuộc tính

php artisan vendor:publish --provider="JamesMills\LaravelTimezone\LaravelTimezoneServiceProvider" --tag=migrations
5 bên trong tệp cấu hình
composer require jamesmills/laravel-timezone
4

Gói GeoIp cơ bản

Nếu bạn muốn tùy chỉnh gói

php artisan vendor:publish --provider="JamesMills\LaravelTimezone\LaravelTimezoneServiceProvider" --tag=migrations
7 cơ bản, bạn có thể xuất bản tệp cấu hình bằng cách sử dụng lệnh bên dưới

@displayDate[$post->created_at]
1

Nhật ký thay đổi

Vui lòng xem CHANGELOG để biết thêm thông tin về những thay đổi gần đây

Đóng góp

Vui lòng xem ĐÓNG GÓP để biết chi tiết

Giấy phép

Gói này miễn phí 100% và mã nguồn mở, theo giấy phép MIT. Sử dụng nó theo cách bạn muốn

Gói này là Treeware. Nếu bạn sử dụng nó trong sản xuất, thì chúng tôi yêu cầu bạn mua cho thế giới một cái cây để cảm ơn vì công việc của chúng tôi. Bằng cách đóng góp cho rừng Treeware, bạn sẽ tạo việc làm cho các gia đình địa phương và khôi phục môi trường sống của động vật hoang dã

Vấn đề

Nếu bạn nhận được thông báo như

php artisan vendor:publish --provider="JamesMills\LaravelTimezone\LaravelTimezoneServiceProvider" --tag=migrations
8 thì điều này là do gói
php artisan vendor:publish --provider="JamesMills\LaravelTimezone\LaravelTimezoneServiceProvider" --tag=migrations
7 yêu cầu trình điều khiển bộ nhớ đệm hỗ trợ gắn thẻ và có thể bạn đã đặt ứng dụng của mình để sử dụng trình điều khiển bộ nhớ đệm
php artisan migrate
0. Bạn có thể xuất bản tệp cấu hình cho gói
php artisan vendor:publish --provider="JamesMills\LaravelTimezone\LaravelTimezoneServiceProvider" --tag=migrations
7 và đặt
php artisan migrate
2 để giải quyết vấn đề này. Đọc thêm về vấn đề này tại đây

Làm cách nào để thay đổi múi giờ trong laravel một cách linh hoạt?

Nếu bạn muốn giữ múi giờ mới cho tất cả các yêu cầu trong tương lai, bạn cần sử dụng gói như larapack/config-writer để có thể lưu múi giờ vào tệp cấu hình ứng dụng. Một cách khác để xử lý việc này là giữ múi giờ trong DB, tìm nạp múi giờ đó trong mọi yêu cầu và đặt múi giờ đó bằng config[['app. timezone' => $timezone]] động .

Làm thế nào để đối phó với múi giờ trong laravel?

Nếu bạn cần cấu hình tùy chỉnh. .
Định cấu hình múi giờ ứng dụng của bạn thành UTC. 'múi giờ' => 'UTC',
Bạn có thể lưu trữ các múi giờ khác nhau trong cột cơ sở dữ liệu
Khi xuất/hiển thị ngày, chỉ cần định dạng nó để sử dụng múi giờ đó. $timezone = 'Mỹ/Vancouver';

Làm cách nào để đặt múi giờ mặc định trong php?

Hàm date_default_timezone_set[] đặt múi giờ mặc định được sử dụng bởi tất cả các hàm ngày/giờ trong tập lệnh.

Làm cách nào để lấy múi giờ của trình duyệt trong laravel?

Để lưu trữ múi giờ của người dùng trong cơ sở dữ liệu, chúng tôi sẽ cần thêm một cột trong bảng của người dùng, trước tiên hãy thêm cột đó. .
Thêm cột "múi giờ" trong cơ sở dữ liệu bảng người dùng
Lưu trữ múi giờ trong quá trình Đăng ký
Thêm múi giờ làm trường ẩn trong biểu mẫu đăng ký
Nhận múi giờ từ yêu cầu đăng khi đăng ký

Chủ Đề