Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tonysm/local-time-laravel
This is a Laravel port of the local_time gem from Basecamp.
https://github.com/tonysm/local-time-laravel
Last synced: 13 days ago
JSON representation
This is a Laravel port of the local_time gem from Basecamp.
- Host: GitHub
- URL: https://github.com/tonysm/local-time-laravel
- Owner: tonysm
- License: mit
- Created: 2021-07-01T02:01:13.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-03-08T03:20:38.000Z (9 months ago)
- Last Synced: 2024-10-11T21:21:01.507Z (about 1 month ago)
- Language: PHP
- Homepage:
- Size: 80.1 KB
- Stars: 56
- Watchers: 2
- Forks: 4
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.md
Awesome Lists containing this project
README
This is a Laravel port of the [`local_time`](https://github.com/basecamp/local_time) gem from Basecamp. It makes it easy to display date and time to users in their local time. Its Blade components render a `time` HTML tag in UTC (making it cache friendly), and the JavaScript component immediately converts those elements from UTC to the Browser's local time.
## Installation
1. Install the package via Composer:
```bash
composer require tonysm/local-time-laravel
```2. Install the `local-time` JS lib via NPM:
```bash
npm install local-time -D
```And then import it on your `resources/app.js` file, like so:
```js
// ...
import LocalTime from "local-time"
LocalTime.start()
```## Usage
This package adds a couple Blade components to your project, they are:
```blade
```
Formats the Carbon instance using the default format string. It will convert the regular PHP formats to the `strftime` format for you.
```blade
```
Alias for `` with a month-formatted default. It converts that format to `%B %e, %Y %l:%M%P`.
```blade
```
You can configure the format used by passing it as a prop to the component. Any other attribute will be rendered in the generated `time` tag.
```blade
```
Renders the `time` tag using the default time format and adds the given `class` tag attribute to the element.
Note: The included strftime JavaScript implementation is not 100% complete. It supports the following directives: `%a %A %b %B %c %d %e %H %I %l %m %M %p %P %S %w %y %Y %Z`
### Time ago helper
```blade
```
Displays the relative amount of time passed. With age, the descriptions transition from {quantity of seconds, minutes, or hours} to {date + time} to {date}. The `
Examples (in quotes):
- Recent: "a second ago", "32 seconds ago", "an hour ago", "14 hours ago"
- Yesterday: "yesterday at 5:22pm"
- This week: "Tuesday at 12:48am"
- This year: "on Nov 17"
- Last year: "on Jan 31, 2012"### Relative time helper
Preset time and date formats that vary with age. The available types are date, time-ago, time-or-date, and weekday. Like the `` component, `type` can be passed a string.
```blade
```
**Available `type` options:**
- `date`: Includes the year unless it's current. "Apr 11" or "Apr 11, 2013"
- `time-ago`: See above. `` calls `` with this `type` option.
- `time-or-date`: Displays the time if it occurs today or the date if not. "3:26pm" or "Apr 11"
- `weekday`: Displays "Today", "Yesterday", or the weekday (e.g. Wednesday) if the time is within a week of today.
- `weekday-or-date`: Displays the weekday if it occurs within a week or the date if not. "Yesterday" or "Apr 11"### Example
```bash
php artisan tinker
>>> $user->created_at
=> Illuminate\Support\Carbon @1625103168 {#4106
date: 2021-06-30 22:32:48.0 UTC (+00:00),
}
``````blade
```
Renders:
```html
```And is converted client-side to:
```html
```### Configuration
To configure the default date and time formats, you can use the `useTimeFormat` and `useDateFormat` methods on the `LocalTimeLaravelFacade` on your `AppServiceProvider`, like so:
```php