项目作者: taylorhakes

项目描述 :
Lightweight and simple JS date formatting and parsing
高级语言: JavaScript
项目地址: git://github.com/taylorhakes/fecha.git
创建时间: 2015-01-09T03:08:53Z
项目社区:https://github.com/taylorhakes/fecha

开源协议:MIT License

下载


fecha Build Status

Lightweight date formatting and parsing (~2KB). Meant to replace parsing and formatting functionality of moment.js.

NPM

  1. npm install fecha --save

Yarn

  1. yarn add fecha

Fecha vs Moment


































Fecha Moment
Size (Min. and Gzipped) 2.1KBs 13.1KBs
Date Parsing
Date Formatting
Date Manipulation
I18n Support

Use it

Formatting

format accepts a Date object (or timestamp) and a string format and returns a formatted string. See below for
available format tokens.

Note: format will throw an error when passed invalid parameters

  1. import { format } from 'fecha';
  2. type format = (date: Date, format?: string, i18n?: I18nSettings) => str;
  3. // Custom formats
  4. format(new Date(2015, 10, 20), 'dddd MMMM Do, YYYY'); // 'Friday November 20th, 2015'
  5. format(new Date(1998, 5, 3, 15, 23, 10, 350), 'YYYY-MM-DD hh:mm:ss.SSS A'); // '1998-06-03 03:23:10.350 PM'
  6. // Named masks
  7. format(new Date(2015, 10, 20), 'isoDate'); // '2015-11-20'
  8. format(new Date(2015, 10, 20), 'mediumDate'); // 'Nov 20, 2015'
  9. format(new Date(2015, 10, 20, 3, 2, 1), 'isoDateTime'); // '2015-11-20T03:02:01-05:00'
  10. format(new Date(2015, 2, 10, 5, 30, 20), 'shortTime'); // '05:30'
  11. // Literals
  12. format(new Date(2001, 2, 5, 6, 7, 2, 5), '[on] MM-DD-YYYY [at] HH:mm'); // 'on 03-05-2001 at 06:07'

Parsing

parse accepts a Date string and a string format and returns a Date object. See below for available format tokens.

NOTE: parse will throw an error when passed invalid string format or missing format. You MUST specify a format.

  1. import { parse } from 'fecha';
  2. type parse = (dateStr: string, format: string, i18n?: I18nSettingsOptional) => Date|null;
  3. // Custom formats
  4. parse('February 3rd, 2014', 'MMMM Do, YYYY'); // new Date(2014, 1, 3)
  5. parse('10-12-10 14:11:12', 'YY-MM-DD HH:mm:ss'); // new Date(2010, 11, 10, 14, 11, 12)
  6. // Named masks
  7. parse('5/3/98', 'shortDate'); // new Date(1998, 4, 3)
  8. parse('November 4, 2005', 'longDate'); // new Date(2005, 10, 4)
  9. parse('2015-11-20T03:02:01-05:00', 'isoDateTime'); // new Date(2015, 10, 20, 3, 2, 1)
  10. // Override i18n
  11. parse('4 de octubre de 1983', 'M de MMMM de YYYY', {
  12. monthNames: [
  13. 'enero',
  14. 'febrero',
  15. 'marzo',
  16. 'abril',
  17. 'mayo',
  18. 'junio',
  19. 'julio',
  20. 'agosto',
  21. 'septiembre',
  22. 'octubre',
  23. 'noviembre',
  24. 'diciembre'
  25. ]
  26. }); // new Date(1983, 9, 4)

i18n Support

  1. import {setGlobalDateI18n} from 'fecha';
  2. /*
  3. Default I18n Settings
  4. {
  5. dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thur', 'Fri', 'Sat'],
  6. dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
  7. monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
  8. monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
  9. amPm: ['am', 'pm'],
  10. // D is the day of the month, function returns something like... 3rd or 11th
  11. DoFn(dayOfMonth) {
  12. return dayOfMonth + [ 'th', 'st', 'nd', 'rd' ][ dayOfMonth % 10 > 3 ? 0 : (dayOfMonth - dayOfMonth % 10 !== 10) * dayOfMonth % 10 ];
  13. }
  14. }
  15. */
  16. setGlobalDateI18n({
  17. dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thur', 'Fri', 'Sat'],
  18. dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
  19. monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
  20. monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
  21. amPm: ['am', 'pm'],
  22. // D is the day of the month, function returns something like... 3rd or 11th
  23. DoFn: function (D) {
  24. return D + [ 'th', 'st', 'nd', 'rd' ][ D % 10 > 3 ? 0 : (D - D % 10 !== 10) * D % 10 ];
  25. }
  26. });

Custom Named Masks

  1. import { format, setGlobalDateMasks } from 'fecha';
  2. /*
  3. Default global masks
  4. {
  5. default: 'ddd MMM DD YYYY HH:mm:ss',
  6. shortDate: 'M/D/YY',
  7. mediumDate: 'MMM D, YYYY',
  8. longDate: 'MMMM D, YYYY',
  9. fullDate: 'dddd, MMMM D, YYYY',
  10. shortTime: 'HH:mm',
  11. mediumTime: 'HH:mm:ss',
  12. longTime: 'HH:mm:ss.SSS'
  13. }
  14. */
  15. // Create a new mask
  16. setGlobalDateMasks({
  17. myMask: 'HH:mm:ss YY/MM/DD';
  18. });
  19. // Use it
  20. format(new Date(2014, 5, 6, 14, 10, 45), 'myMask'); // '14:10:45 14/06/06'

Formatting Tokens
















































































































































Token Output
Month M 1 2 … 11 12
MM 01 02 … 11 12
MMM Jan Feb … Nov Dec
MMMM January February … November December
Day of Month D 1 2 … 30 31
Do 1st 2nd … 30th 31st
DD 01 02 … 30 31
Day of Week d 0 1 … 5 6
ddd Sun Mon … Fri Sat
dddd Sunday Monday … Friday Saturday
Year YY 70 71 … 29 30
YYYY 1970 1971 … 2029 2030
AM/PM A AM PM
a am pm
Hour H 0 1 … 22 23
HH 00 01 … 22 23
h 1 2 … 11 12
hh 01 02 … 11 12
Minute m 0 1 … 58 59
mm 00 01 … 58 59
Second s 0 1 … 58 59
ss 00 01 … 58 59
Fractional Second S 0 1 … 8 9
SS 0 1 … 98 99
SSS 0 1 … 998 999
Timezone Z
-07:00 -06:00 … +06:00 +07:00
ZZ
-0700 -0600 … +0600 +0700