npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

@uocdev/timestamp-hasei

v3.7.2

Published

Timestamp HASEI (High Application Source Encode Init) Is the powerful Node.js library init times. with multi purpose packages

Readme

⏰ Timestamp

The open source package files for Node.js / Javascript and multi-purpose utility library built for Discord bots, backend apps, and modern JS tools — featuring modular support for timestamps, environment config, encode or decode, synchronized, schedule and more!.

📦 Installation

npm install @uocdev/timestamp-hasei

⚒️ Module & Features

1. Timestamp

Example:

const {
  now,
  unix,
  discordFull,
  htmlTime,
  androidISO,
  saveTimestamp
} = require('@uocdev/timestamp-hasei');

const filePath = saveTimestamp('id-ID')  // saveTimestamp when run this script

console.log(now());                    // e.g., "18/06/2025, 15:00:00"
console.log(unix());                   // e.g., 1718727000000
console.log(discordFull());            // e.g., "<t:1718727000:F>"
console.log(htmlTime());              // e.g., <time datetime="...">Wed Jun 18 2025</time>
console.log(androidISO());            // e.g., "2025-06-18T15:00:00.000Z"

Method | Function | Description | Output Example | |------------|---------------|------------------ | now(locale) | Get current time formatted by locale (default:id-ID)| 18/06/2025, 15:00:00" | | unix()| Get current UNIX timestamp in milliseconds | 1718727000000 | | discordFull()| Get full Discord <t:...:F> timestamp string | <t:1718727000:F> | | htmlTime() | Get a semantic HTML <time> element with ISO string |<time datetime="...">Wed Jun 18 2025</time> | |androidISO() | Get ISO string for Android Date/Java compatible format | 2025-06-18T15:00:00.000Z | | saveTimestamp() | Save currently Timestamp to ./logs/*.txt file | logs/timestamp-2025-6-18.txt

Platform Support | Platform | Works With | Notes | |--------------|-------------|--------| | Discord | Node.js/ discord.js | Use discordFull() for message embeds | | Website | Vanilla JS or bundler | htmlTime() and now() work directly | | Android | WebView / JS Engines | Use androidISO() or unix() | | Windows/Linux | Node.js, Electron, CLI | All functions supported natively |

1.1 Encode / Decode

Example:

const {
  now,
  base64Encode,
  base64Decode,
  utfEncode,
  utfDecode
} = require('@uocdev/timestamp-hasei');

const timestamp = now();

const base64 = base64Encode(timestamp);
const decodedBase64 = base64Decode(base64);

const utf = utfEncode(timestamp);
const decodedUtf = utfDecode(utf);

console.log("Original:", timestamp);
console.log("Base64 Encoded:", base64);
console.log("Base64 Decoded:", decodedBase64);
console.log("UTF-8 Encoded:", utf);
console.log("UTF-8 Decoded:", decodedUtf);

Method | Function | Description | Output Example | |----------|-------------|----------------| |base64Encode(str) |Encode timestamp as Base64 string |MTgvMDYvMjAyNSwgMjM6NTk6NTk= | |base64Decode(str) |Decode Base64 string back to UTF-8 |18/06/2025, 23:59:59 | |utfEncode(str) |Encode timestamp as UTF-8 Buffer |<Buffer 31 38 2f ...> | |utfDecode(buffer) |Decode UTF-8 Buffer back to readable string |18/06/2025, 23:59:59 |

1.2 Timezone / Compare GMT UTC

Example:

const { getTimezoneInfo, compareGmtUtc } = require('@uocdev/timestamp-hasei');

const info = getTimezoneInfo();
console.log("Timezone Info:");
console.log("Timezone Name:", info.timezoneName);
console.log("GMT Offset:", info.gmtOffset);
console.log("UTC Offset:", info.utcOffset);
console.log("Raw Offset (minutes):", info.rawOffsetMinutes);

const result = compareGmtUtc();

console.log("GMT Format:", result.gmtFormatted);
console.log("UTC Format:", result.utcFormatted);
console.log("Are GMT and UTC Equal Right Now?", result.areEqual ? "Yes" : "No");

Method | Function | Description | Output Example | |----------|-------------|----------------| |getTimezoneInfo() | Return object with GMT/UTC offset & name | { gmtOffset: 'GMT+07', ... } | |compareGmtUtc() | Compares current GMT and UTC formats |{ gmtFormatted, utcFormatted, areEqual } |

1.3 Synchronized

Example:

// syncTime()
const { syncTime } = require('@uocdev/timestamp-hasei');

syncTime((err, result) => {
  if (err) return console.error('❌ Sync failed:', err.message);

  console.log('Synced Time:', result.syncedTime.toISOString());
  console.log('Local Time:', result.localTime.toISOString());
  console.log('Drift:', result.driftMilliseconds, 'ms');
  console.log('Timezone:', result.timezone);
});

// syncTimeFrom()
const { syncTimeFrom } = require('@uocdev/timestamp-hasei');
syncTimeFrom('https://worldtimeapi.org/api/timezone/Asia/Tokyo', console.log);

// syncAndCorrect()
const { syncAndCorrect } = require('@uocdev/timestamp-hasei');
syncAndCorrect((err, data) => {
  if (!err) {
    console.log("✅ Corrected Time:", data.correctedTime.toISOString());
  }
});

// autoSync()
const { autoSync } = require('@uocdev/timestamp-hasei');

const interval = autoSync(10000, (data) => {
  console.log("🔁 Auto Synced:", data.syncedTime.toISOString(), "Drift:", data.driftSeconds, "s");
});

// To stop auto sync: clearInterval(interval);

Method | Function | Description | Output Example | |----------|-------------|----------------| |syncTime(cb)|Sync with default API (worldtimeapi.org)|{ syncedTime, drift }| |syncTimeFrom(url, cb)|Sync with custom API (must return datetime field)|{ syncedTime, drift }| |syncAndCorrect(cb)|Returns corrected local time removing drift|{ correctedTime, ... }| |autoSync(ms, cb)|Auto-sync every X milliseconds|setInterval reference|

1.4 Schedule

Example:

const {
  scheduleAt,
  scheduleIn,
  scheduleRepeat,
  scheduleCron
} = require('@uocdev/timestamp-hasei');

// Run 5 seconds from now
scheduleIn(5000, () => console.log('⏱️ 5 seconds passed'));

// Run at exact time
scheduleAt('2025-06-19T15:00:00Z', (err, time) => {
  if (!err) console.log('📌 Ran at', time.toISOString());
});

// Repeat every 10 seconds
scheduleRepeat(10000, (time) => console.log('🔁 Repeated at', time.toISOString()));

// Daily at 18:30
scheduleCron('18:30', (time) => console.log('🕒 CRON triggered at', time.toLocaleTimeString()));

Method | Function | Description | Output Example | |----------|-------------|----------------| |scheduleAt(date, cb)|Schedule task for a future timestamp|2025-06-19T15:00| |scheduleIn(ms, CD)|Delay execution for X ms|5000| |scheduleRepeat(ms, cb)|Repeat every X ms|10000| |scheduleCron("HH:MM", cb)|Schedule at a fixed time every day|"22:15"|

1.5 Validator

Example:

const { validator } = require('@uocdev/timestamp-hasei');

console.log(validator.isString("Hello"));               // true
console.log(validator.isNumber("123"));                 // true
console.log(validator.isValidTime("23:59"));            // true
console.log(validator.isValidTimezone("Asia/Tokyo"));   // true

Method | Function | Description | Example Input | Returns | |----------|-------------|---------------|--------| |validator.isString()|Checks if value is a string|hello|True| |validator.isNumber()|Checks if value is a number or numeric string|123.45|True| |validator.isValidTime()|Checks if value is valid 24-hour HH:mm format|18.30|True| |validator.isValidTimezone()|Validates if timezone is IANA-compliant|Europe/London|True|

1.6 Formatters

Example:

const { formatISO, formatCompact, formatReadable } = require('@uocdev/timestamp-hasei');

console.log(formatISO());        // 2025-06-18T14:55:00.000Z
console.log(formatCompact());    // 20250618_2155
console.log(formatReadable());   // Wed, Jun 18, 2025, 21:55

Method | Function | Description | Example Output | |----------|-------------|----------------| |formatISO()|ISO-8601 timestamp|2025-06-18T15:00:00.000Z| |formatCompact()|Clean file-friendly format|20250618_1500| |formatReadable()|Human-readable with weekday|Wed, Jun 18, 2025, 15:00|

1.7 Birthday

Example:

const {
  untilBirthday,
  isTodayBirthday,
  daysUntilBirthday,
  nextBirthdayDate
} = require('@uocdev/timestamp-hasei');

console.log(untilBirthday("11-01"));         // { days: 130, hours: 4, ... }
console.log(isTodayBirthday("06-18"));       // true or false
console.log(daysUntilBirthday("11-01"));     // 130
console.log(nextBirthdayDate("11-01"));      // 2025-11-01T00:00:00.000Z

Method | Function | Description | Example Input | Output | |----------|-------------|---------------|--------| |untilBirthday()|Time left until next birthday|"11-01"|{ days, hours, .... }| |isTodayBirthday()|Checks if today is the birthday|"06-18"|true / false| |daysUntilBirthday()|Days left until next birthday|"11-01"|130| |nextBirthdayDate()|Gets next birthday Date object|"11-01"|2025-11-01T00:00:00Z|

🐞 Know Error

HTTP Error (Synchronized): Because we use free API this can make you disconnected from timestamp Module Not Found: Some module not properly when importing Import Error/Module Error: We use CommonJS import const not use ESM Import (open pull request for ide/how to configure this)

💬 Feedback / Issue?

We are open source project, free feel open PR(s) for make this package better. Join server discord for support discord.gg/fperp

📚 Additional sources

Repo: https://github.com/UocDev/timestamp Discord Server: https://discord.gg/wQmKyRm5rx Discord Developer Docs: https://discord.com/developers/docs/intro GitHub: https://github.com GitHub Blog: https://github.blog/ GitHub Docs: https://docs.github.com/en Node.js: https://nodejs.org Node.js Docs: https://nodejs.org/docs/latest/api/ Node.js Wikipedia: https://en.wikipedia.org/wiki/Node.js NPM: https://npmjs.com NPM Docs: https://docs.npmjs.com/ Javascript Wikipedia: https://en.wikipedia.org/wiki/JavaScript