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 🙏

© 2024 – Pkg Stats / Ryan Hefner

get-time-diff

v1.0.8

Published

可以快速获得两个时间的差值,且可以获得一个可配置的字符串

Downloads

4

Readme

get-time-diff

可以快速获得两个时间的差值 --- 一个可配置的字符串 & 差值参数

暂无 git repo,bug feedback 可联系 [email protected]

1.0.0 存在严重 bug,建议升级。请尽可能在 Typescript 环境中使用。

使用方式

获取差值字符串

const timeDiffStr = require('get-time-diff');

const nowadays = new Date().getTime();

const ans = timeDiffStr({
  startDate: nowadays - 1000 * 60,
  endDate: nowadays,
});

console.log(ans);

1 分钟 0 秒 0 毫秒

支持自定义展示

const timeDiffStr = require('get-time-diff');

const nowadays = new Date().getTime();

const ans = timeDiffStr({
  startDate: nowadays - 1000 * 60,
  endDate: nowadays,
  options: {
    normalConfig: {
      units: {
        milliseconds: false, // 不展示 毫秒
      },
    },
  },
});

console.log(ans);

1 分钟 0 秒

本包依赖了 timediff,在 options.normalConfig 支持部分 timediff 功能。

国际化(暂不支持自定义,写死了中文和英文

const timeDiffStr = require('get-time-diff');

const nowadays = new Date().getTime();

const ans = timeDiffStr({
  startDate: nowadays - 1000 * 60 * 2,
  endDate: nowadays,
  options: {
    extraConfig: {
      lang: 'en',
      upper: 'first'
    }
  },
});

console.log(ans);

2 Minutes 0 Second 0 Millisecond

兜底策略(这个可以自定义

const timeDiffStr = require('get-time-diff');

const nowadays = new Date().getTime();

const ans = timeDiffStr({
  startDate: nowadays - 1000 * 60 * 2,
  endDate: nowadays,
  options: {
    extraConfig: {
      lang: 'en',
      upper: 'first',
      minimum: 1, // 最小值,需要配合 minimumKey 使用
      minimumKey: 'hours', // 最小单位
      // 这样如果两个时间差小于 1 hour,则会触发兜底
      minimumFallback: 'Too close! Just @@value@@ @@key@@'
      // 可以使用 @@ 来表示占位符
      // 默认是 "Less than @@value@@ @@key@@"
    }
  },
});

console.log(ans);

Too close! Just 1 Hour

================================================================

配置

总体配置

导入模块后,其就是一个函数,接受 1 个配置对象作为参数,第一层配置对象属性如下:

|参数名称|参数类型|意义|备注| |:---|:---|:---|:---| |startDate| 日期对象、字符串、数字 或 其它 |作为时间轴上的开始时间|日期对象会直接被使用,字符串或数字会传入 Date 构造函数中,如果是 其它 类型,则默认取当前时间| |endDate| 同 startDate |作为时间轴上的结束时间|同 startDate| |options| 配置对象 或一个 Callback| 进一步配置|配置对象的具体描述下文会说,但如果传递一个回调函数,这个函数将会在转换成功之后调用|

回调函数定义(diff: Object, value: string, summaryDiff: Object) => void

  • diff,记录了具体每一个值的差值,但结果可能会受 options 配置对象的影响
  • value,原先函数的返回值,即一个字符串
  • summaryDiff,绝对时间差值(1.0.3 支持)

注意,如果传入了 Callback,那么此时 get-time-diff 方法会 非异步调用 Callback,且将不再会有返回值,即 undefined

diff & summaryDiff 参数定义

type Diff = {
  years?: number;
  months?: number;
  weeks?: number;
  days?: number;
  hours?: number;
  minutes?: number;
  seconds?: number;
  milliseconds?: number;
};

配置对象 options

|参数名称|意义| |:---|:---|:---| |normalConfig|timediff 库所支持的部分配置项| |extraConfig|额外配置项|

normalConfig 基础配置项

const normalConfig = {
  units: {
    years: true, // 年差值
    months: true, // 月差值
    weeks: true, // 周差值
    days: true, // 天差值
    hours: true, // 小时差值
    minutes: true, // 分钟差值
    seconds: true, // 秒差值
    milliseconds: true, // 毫秒差值
  },
  returnZeros: true, // 默认保留所有的值为 0 的项
  // 去掉了这里原本的  Callback!切勿在 normalConfig 中配置回调函数!
};

extraConfig 额外配置项

const extraConfig = {
  sequence: {}, // 时间单位,后续会详细描述

  lang: 'zh', // 默认是中文的时间单位,仅支持 'zh' 或 'en'

  // 'none'  不大写
  // 'first' 首字母大写
  // 'all'   全大写
  upper: 'none', // 仅针对 en 有效,是否大写单词

  // 最小兜底值的设置
  // 默认最小是 1 单位时间(1.0.7
  // 可以接受一个 数字类型 为值
  minimum: 1,

  // 最大天花板值,同 minimum
  maximum: Number.MAX_SAFE_INTEGER, // 天花板设置成最大值(1.0.7

  // 最小兜底值对应的单位
  // 如果 minimum 是 1
  // 那么配合 minimumKey 可得知,最小兜底是 1 毫秒
  // 详细取值为 sequence 时间单位的各个 key 值
  // 也是 normalConfig.units 的各个 key 值
  minimumKey: 'milliseconds', // 小于 x 毫秒

  // 同 minimumKey
  maximumKey: 'years', // 大于 x 年

  // 兜底文案,当触发某种兜底时可以自定义输出
  // 接受一个字符串,代表设置
  // 任何空值(包括 空字符串)都代表不设置
  // 字符串中可以使用占位符 @@ 来替换某些特殊的值:
  //    @@value@@,代表当前兜底时间值,即 minimum 或 maximum
  //    @@key@@,代表当前兜底单位,即 minimumKey 或 maximumKey
  // 默认兜底文案是:
  //     中文:
  //         minimum: '小于 @@value@@ @@key@@'
  //         maximum: 'Less than @@value@@ @@key@@'
  //     英文:
  //         minimum: '大于 @@value@@ @@key@@'
  //         maximum: 'More than @@value@@ @@key@@'
  minimumFallback: '',
  maximumFallback: '',

  savePrefixZero: false, // 默认不保留前缀 0
  saveSuffixZero: true, // 默认保留后缀 0

  // 1.0.3 新增
  // 可以自定义天花板溢出
  // 默认为 'years'(因为日常生活时间最长单位就是年
  // 例如 1 天 2 小时 0 分钟
  // 设置 ceilIgnore 为 'hours'
  // 结果就会变为
  // 26 小时 0 分钟
  ceilIgnore: 'years', 

  // 可以在 extraConfig 中单独设置 callback
  // 使用方法同直接传入
  callback: (diff: Diff, value: string): void => {},
};

CHANGELOG

|版本号|Fix|Feature|Other| |:---|:---|:---|:---| |1.0.7|修改兜底策略,调整天花板值|-|-| |1.0.6|-|-|将中文【日】改为【天】| |1.0.5|修复 returnZero 配置失效问题|-|-| |1.0.4|-|-|完善 README| |1.0.3|修复兜底策略逻辑问题|Callback 增加第三个参数,可以得到每个时间单位的绝对差值;extraConfig 增加配置项 ceilIgnore,可以设置最高单位,采用时间绝对差值|-| |1.0.2|-|-|修复 Markdown 样式问题| |1.0.1|修复部分 bug,完善 TypeScript 兼容|-|-| |1.0.0|-|-|初次发包|