Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

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.

Awesome Lists containing this project

README

        

Logo Local Time Laravel






Total Downloads


License

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