https://github.com/jcoreio/date-goggles
see numeric timestamps in text as dates
https://github.com/jcoreio/date-goggles
date timestamp
Last synced: 11 months ago
JSON representation
see numeric timestamps in text as dates
- Host: GitHub
- URL: https://github.com/jcoreio/date-goggles
- Owner: jcoreio
- License: mit
- Created: 2020-04-02T21:03:50.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2023-01-05T10:46:20.000Z (over 3 years ago)
- Last Synced: 2025-07-09T16:08:45.940Z (11 months ago)
- Topics: date, timestamp
- Language: TypeScript
- Homepage: https://jcoreio.github.io/date-goggles/
- Size: 1.56 MB
- Stars: 0
- Watchers: 3
- Forks: 0
- Open Issues: 30
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# date-goggles
[](https://circleci.com/gh/jcoreio/date-goggles)
[](https://codecov.io/gh/jcoreio/date-goggles)
[](https://github.com/semantic-release/semantic-release)
[](http://commitizen.github.io/cz-cli/)
[](https://badge.fury.io/js/date-goggles)
Our work involves lots of numeric timestamps in JSON. This leads to a lot of log output like:
```
[2020-04-01 18:32:22 TrackedEntityActivityRecordAPI] INFO calling historian.putData: { '_org/5/Employees/148':
{ t: [ 1585777672134, 1585778400000 ],
v: [ 'Stuffing', null ],
beginTime: 1585777672134,
```
Which can be tedious to debug because numeric timestamps are inscrutable. `date-goggles` helps by searching for numbers that
seem to be timestamps and converting them to `Dates`:
```
[2020-04-01 18:32:22 TrackedEntityActivityRecordAPI] INFO calling historian.putData: { '_org/5/Employees/148':
{ t: [ 4/1/2020, 4:47:52 PM, 4/1/2020, 5:00:00 PM ],
v: [ 'Stuffing', null ],
beginTime: 4/1/2020, 4:47:52 PM,
```
# Table of Contents
- [Node.js API](#nodejs-api)
- [`dateGoggles(input, options)`](#dategogglesinput-options)
- [`parse(input, options)`](#parseinput-options)
- [`format(ast, options)`](#formatast-options)
- [CLI](#cli)
# Node.js API
## `dateGoggles(input, options)`
Transforms the output with `format(parse(input, options), options)`.
See [`parse`](#parseinput-options) and [`format`](#formatast-options) for `options` documentation.
## `parse(input, options)`
Parses input text.
### Arguments
#### `input: string` (**required**)
The input to parse.
#### `options.unit` (`'milliseconds' | 'seconds'`, _optional_)
The timestamp unit. If omitted, tries to guess based upon the input or numeric `options.min`/`options.max`.
#### `options.min` (`number | Date | null | undefined`, _optional_)
Numbers found in the input less than this will not be considered timestamps.
If you pass `null`, no lower bound is used. If `undefined` or omitted, defaults to 10 years ago.
#### `options.max` (`number | Date | null | undefined`, _optional_)
Numbers found in the input greater than this will not be considered timestamps.
If you pass `null`, there's no upper bound. If `undefined` or omitted, defaults to 5 years into the future.
### Returns: `Array`
The input split up in to substrings in which no timestamps were found, and timestamps
converted to `Date`s.
## `format(ast, options)`
Formats a parsed AST.
### Arguments
#### `ast: Array` (**required**)
The AST output of `parse`.
#### `options.formatDate` (`(date: Date) => string`, _optional_)
Customizes how `Date`s are formatted.
### Returns: `string`
The formatted output.
# CLI
The CLI is pretty basic and doesn't have any options to customize output right now,
it just parses file arguments or stdin and outputs using `date.toLocaleString()`:
```
date-goggles app1.log app2.log
```
OR
```
some-command | date-goggles
```