Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/bashleigh/shleemy
:clock10: Human readable datetime values for JavaScript and TypeScript.
https://github.com/bashleigh/shleemy
date datetime human-readable intervals
Last synced: about 2 months ago
JSON representation
:clock10: Human readable datetime values for JavaScript and TypeScript.
- Host: GitHub
- URL: https://github.com/bashleigh/shleemy
- Owner: bashleigh
- License: mit
- Created: 2021-01-27T19:47:32.000Z (almost 4 years ago)
- Default Branch: master
- Last Pushed: 2024-08-16T13:21:04.000Z (4 months ago)
- Last Synced: 2024-09-16T17:23:47.030Z (3 months ago)
- Topics: date, datetime, human-readable, intervals
- Language: TypeScript
- Homepage:
- Size: 83 KB
- Stars: 30
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
## shleemy
Simple human readable intervals for those that don't want to go to time prison.
Handy interval diff object for customisable, rounded, human readable phrases such as "in 3 days", "12 years ago", "a minute ago", "just now".
- Small
- Mighty
- No dependencies
- Easy to use
- You won't go to time prison for messing with time> Inspiration take from [Carbon](https://github.com/briannesbitt/carbon)
### Install
```bash
$ yarn add shleemy
```Or
```npm
$ npm i shleemy
```### Usage
##### Basic
Get human readable values with tense information
**Present**
```ts
import { shleemy } from "shleemy";const interval = shleemy(new Date());
console.log(interval.forHumans); // "just now"
console.log(interval.tense); // "present"
```
**Past**
```ts
import { shleemy } from "shleemy";const date = new Date();
date.setMinutes(date.getMinutes() - 3);console.log(shleemy(date).forHumans); // "3 minutes ago"
console.log(shleemy(date).tense); // "past"
```
**Future**
```ts
import { shleemy } from "shleemy";const date = new Date();
date.setMinutes(date.getMinutes() + 70);console.log(shleemy(date).forHumans); // "in an hour"
console.log(shleemy(date).tense); // "future"
```##### interval values
```ts
import { shleemy } from "shleemy";const date = new Date();
date.setHours(date.getHours() - 3);console.log(shleemy(date).roundedHours); // 3
``````ts
import { shleemy } from "shleemy";const date = new Date();
date.setDays(date.getDays() - 12);console.log(shleemy(date).roundedDays); // 12
console.log(shleemy(date).roundedWeeks); // 1
```##### Basic Formatting
```ts
const date = new Date();
date.setDays(date.getDays() - 12);const interval = shleemy(date);
console.log(interval.time); // 12:34
console.log(interval.date); // 12/03/2021
```
> No locale as of now, so you backwards date people will have to do with day/month/year. Soz### Output manipulation
The Shleemy object can be used as a string!
```ts
import { shleemy } from "shleemy";const date = new Date();
date.setDays(date.getDays() - 12);const interval = shleemy(date);
console.log(`added ${interval}`); // added 12 days ago;
console.log(`${interval.replace('days', 'yonders')}`); // 12 yonders ago;
```**Available properties**
```ts
import { shleemy } from "shleemy";const date = new Date();
date.setDays(date.getDays() - 12);
const interval = shleemy(date);console.log('seconds', interval.seconds);
console.log('rounded seconds', interval.roundedSeconds);
console.log('minutes', interval.minutes);
console.log('rounded minutes', interval.roundedMinutes);
console.log('hours', interval.hours);
console.log('rounded hours', interval.roundedHours);
console.log('days', interval.days);
console.log('rounded days', interval.roundedDays);
console.log('weeks', interval.weeks);
console.log('rounded weeks', interval.roundedWeeks);
console.log('months', interval.months);
console.log('rounded months', interval.roundedMonths);
console.log('years', interval.years);
console.log('rounded years', interval.roundedYears);
console.log('tense', interval.tense);
```
> All properties will be positive values. You cannot have -3 days in the 4th dimension. Use `tense` for past/present/future value### Options
```ts
import { shleemy, ShleemyInterval } from "shleemy";const date = new Date();
date.setDays(date.getDays() - 12);const toDate = new Date();
toDate.setDays(toDate.getDays() - 20);console.log(
shleemy(date, {
toDate: toDate, // default: new Date() (now)
rounding: 'ceil', // default: floor
humanReadable: {
past: (value, interval) => `${value} ${ShleemyInterval.pluralInterval(value, interval)} yonders ago`, // default: ShleemyInterval.toHumanReadablePast
future: (value, interval) => `in ${value} ${ShleemyInterval.pluralInterval(value, interval)} and you get the idea`, // default: ShleemyInterval.toHumanReadableFuture
present: () => `seconds ago!`, // default: "just now"
}
}).days
); // 8
```