UNPKG

taro-material

Version:

Mini Program components that implement Google's Material Design.

150 lines (136 loc) 3.25 kB
import dayjs from 'dayjs'; import relativeTime from 'dayjs/plugin/relativeTime'; import 'dayjs/locale/zh-cn'; dayjs.extend(relativeTime); dayjs.locale('zh-cn'); const localeData = { en: { years: 'years', months: 'months', days: 'days', hours: 'hours', minutes: 'minutes', seconds: 'seconds', milliseconds: 'a moment', morning: 'morning', afternoon: 'afternoon', evening: 'evening', night: 'evening', today: 'today', thisMonth: 'this month', thisYear: 'this year' }, zh: { years: '年', months: '月', days: '天', hours: '小时', minutes: '分钟', seconds: '秒', milliseconds: '刚刚', morning: '早上', forenoon: '上午', noon: '中午', afternoon: '下午', evening: '晚上', night: '晚上', today: '今天', thisMonth: '本月', thisYear: '今年' } }; const ago = (date, format) => !date ? '' : dayjs(date, format).fromNow(); const ago2 = (date, format) => { if (!date) { return ''; } const _ago = dayjs(date); //, format || `YYYY-MM-DD HH:mm:ss` const now = dayjs(); const range = now.diff(_ago); let key = ''; const locale = 'zh-cn'; if (range > 31622400000) { key = 'years'; } else if (format === 'YYYY') { key = 'thisYear'; } else if (range > 2678400000) { key = 'months'; } else if (format === 'YYYY-MM') { key = 'thisMonth'; } else if (range > 86400000) { key = 'days'; } else if (format === 'YYYY-MM-DD') { key = 'today'; } else if (range > 3600000) { key = 'hours'; } else if (range > 60000) { key = 'minutes'; } else if (range > 1000) { key = 'seconds'; } else { key = null; } let resource = null; switch (locale) { case 'zh-cn': case 'zh': resource = localeData.zh; resource.ago = '前'; break; case 'en': default: resource = localeData.en; resource.ago = 'ago'; break; } if (!key) { return `${resource.milliseconds}`; } else if (key === 'thisYear') { return `${resource.thisYear}`; } else if (key === 'thisMonth') { return `${resource.thisMonth}`; } else if (key === 'today') { return `${resource.today}`; } return `${now.diff(_ago, key)} ${resource[key]} ${resource.ago}`; }; const greet = () => { const now = dayjs(); const hour = now.hour(); const minute = now.minute(); let key = ''; const locale = 'zh-cn'; let resource = null; switch (locale) { case 'zh-cn': case 'zh': if (hour < 9) { key = 'morning'; } else if (hour < 11 && minute < 30) { key = 'forenoon'; } else if (hour < 13 && minute < 30) { key = 'noon'; } else if (hour < 18) { key = 'afternoon'; } else { key = 'evening'; } resource = localeData.zh; return `${resource[key]}好`; case 'en': default: if (hour < 12) { key = 'morning'; } else if (hour < 18) { key = 'afternoon'; } else if (hour < 22) { key = 'evening'; } else { key = 'night'; } resource = localeData.en; return `Good ${resource[key]}`; } }; export default ago2; export { greet, ago, ago2 };