diff --git a/README.md b/README.md index 1d3533b2a..ea1c4f5e8 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -English | [简体中文](./docs/zh-cn/README.zh-CN.md) | [日本語](./docs/ja/README-ja.md) | [Português Brasileiro](./docs/pt-br/README-pt-br.md) | [한국어](./docs/ko/README-ko.md) +English | [简体中文](./docs/zh-cn/README.zh-CN.md) | [日本語](./docs/ja/README-ja.md) | [Português Brasileiro](./docs/pt-br/README-pt-br.md) | [한국어](./docs/ko/README-ko.md) | [Español (España)](./docs/es-es/README-es-es.md)

carga y obtiene el objeto de configuración regional en locale_es + +dayjs.locale('es') // uso global de la configuración regional +// uso de la configuración regional en una instancia específica +dayjs().locale('es').format() +``` + +* Vía CDN: + +```html + + + + +``` + +## Personalización + +You could create your own locale. + +Feel free to open a pull request to share your locale. + +Template of a Day.js locale Object. +```javascript +const localeObject = { + name: 'es', // name String + weekdays: 'Domingo_Lunes ...'.split('_'), // weekdays Array + weekdaysShort: 'Sun_M'.split('_'), // OPTIONAL, short weekdays Array, use first three letters if not provided + weekdaysMin: 'Su_Mo'.split('_'), // OPTIONAL, min weekdays Array, use first two letters if not provided + months: 'Enero_Febrero ... '.split('_'), // months Array + monthsShort: 'Jan_F'.split('_'), // OPTIONAL, short months Array, use first three letters if not provided + ordinal: n => `${n}º`, // ordinal Function (number) => return number + output + relativeTime: { // relative time format strings, keep %s %d as the same + future: 'in %s', // e.g. in 2 hours, %s been replaced with 2hours + past: '%s ago', + s: 'a few seconds', + m: 'a minute', + mm: '%d minutes', + h: 'an hour', + hh: '%d hours', // e.g. 2 hours, %d been replaced with 2 + d: 'a day', + dd: '%d days', + M: 'a month', + MM: '%d months', + y: 'a year', + yy: '%d years' + } +} +``` + +Template of a Day.js locale file. +```javascript +import dayjs from 'dayjs' + +const locale = { ... } // Your Day.js locale Object. + +dayjs.locale(locale, null, true) // load locale for later use + +export default locale +``` diff --git a/docs/es-es/Installation.md b/docs/es-es/Installation.md new file mode 100644 index 000000000..0a93489b7 --- /dev/null +++ b/docs/es-es/Installation.md @@ -0,0 +1,30 @@ +# Guía de instalación + +Tienes a tu disposición varias opciones para obtener y utilizar Day.js: + +* Vía NPM: + +```console +npm install dayjs --save +``` + +```js +import dayjs from 'dayjs' +// O con CommonJS +// var dayjs = require('dayjs'); +dayjs().format(); +``` + +* Vía CDN: + +```html + + + +``` + +* Vía descarga directa y autohospedaje: + +Simplemente descarga la última versión de Day.js en [https://unpkg.com/dayjs/](https://unpkg.com/dayjs/). \ No newline at end of file diff --git a/docs/es-es/Plugin.md b/docs/es-es/Plugin.md new file mode 100644 index 000000000..f5e702932 --- /dev/null +++ b/docs/es-es/Plugin.md @@ -0,0 +1,203 @@ +# Lista de complementos + +Un complemento o *plugin* es un módulo independiente que puede añadirse a Day.js para extender su funcionalidad o añadir nuevas características. + +Por defecto, Day.js viene sin ningún complemento preinstalado, incluyendo únicamente el núcleo de la librería. + +Puedes cargar diversos complementos según tus necesidades. + +## API + +### Extend + +* Devuelve un objeto dayjs + +Método para declarar el uso de un complemento. + +```js +import nombreComplemento +dayjs.extend(nombreComplemento) +dayjs.extend(nombreComplemento, options) // uso del complemento con opciones +``` + +## Instalación + +* Vía NPM: + +```javascript +import dayjs from 'dayjs' +import AdvancedFormat from 'dayjs/plugin/advancedFormat' // carga bajo demanda + +dayjs.extend(AdvancedFormat) // uso del complemento +``` + +* Vía CDN: + +```html + + + + +``` + +## Lista de complementos oficiales + +### AdvancedFormat + +* AdvancedFormat extiende la API `dayjs().format` para proporcionar más opciones de formato. + +```javascript +import advancedFormat from 'dayjs/plugin/advancedFormat' + +dayjs.extend(advancedFormat) + +dayjs().format('Q Do k kk X x') +``` + +Lista de formatos añadidos: + +| Formato | Salida | Descripción | +| ------- | ---------------- | ------------------------------------- | +| `Q` | 1-4 | Cuarto | +| `Do` | 1º 2º ... 31º | Día del mes con ordinal | +| `k` | 1-23 | Hora, contando desde 1 | +| `kk` | 01-23 | Hora, con 2 dígitos, contando desde 1 | +| `X` | 1360013296 | Tiempo Unix en segundos | +| `x` | 1360013296123 | Tiempo Unix en milisegundos | + +### RelativeTime + +* RelativeTime añade las API `.from` `.to` `.fromNow` `.toNow` para dar formato de tiempo relativo a fechas (p.ej.: hace 3 horas). + +```javascript +import relativeTime from 'dayjs/plugin/relativeTime' + +dayjs.extend(relativeTime) + +dayjs().from(dayjs('1990')) // hace 2 años +dayjs().from(dayjs(), true) // 2 años + +dayjs().fromNow() + +dayjs().to(dayjs()) + +dayjs().toNow() +``` + +#### Tiempo desde ahora `.fromNow(withoutSuffix?: boolean)` + +Devuelve un dato de tipo `string`, con el tiempo relativo desde el instante actual. + +#### Tiempo desde X `.from(compared: Dayjs, withoutSuffix?: boolean)` + +Devuelve un dato de tipo `string`, con el tiempo relativo desde el instante X. + +#### Tiempo hasta ahora `.toNow(withoutSuffix?: boolean)` + +Devuelve dato de tipo `string`, con el tiempo relativo transcurrido desde la fecha representada por el objeto `Dayjs` dado hasta el instante actual. + +#### Tiempo hasta X `.to(compared: Dayjs, withoutSuffix?: boolean)` + +Devuelve dato de tipo `string`, con el tiempo relativo transcurrido desde la fecha representada por el objeto `Dayjs` dado hasta el instante X especificado. + +| Rango | Clave | Ejemplo de salida | +| ---------------------------- | ------ | ---------------------------------- | +| de 0 a 44 segundos | s | hace unos segundos | +| de 45 a 89 segundos | m | hace un minuto | +| de 90 segundos a 44 minutos | mm | hace 2 minutos ... hace 44 minutos | +| de 45 a 89 minutos | h | hace una hora | +| de 90 minutos a 21 horas | hh | hace 2 horas ... hace 21 horas | +| de 22 a 35 horas | d | hace un día | +| de 36 horas a 25 días | dd | hace 2 días ... hace 25 días | +| de 26 a 45 días | M | hace un mes | +| de 46 días a 10 meses | MM | hace 2 meses ... hace 10 meses | +| de 11 a 17 meses | y | hace un año | +| más de 18 meses | yy | hace 2 años ... hace 20 años | + +### IsLeapYear + +* IsLeapYear añade la API `.isLeapYear`, que devuelve un dato de tipo `boolean` indicando si el año del objeto `Dayjs` es bisiesto o no. + +```javascript +import isLeapYear from 'dayjs/plugin/isLeapYear' + +dayjs.extend(isLeapYear) + +dayjs('2000-01-01').isLeapYear(); // true +``` + +### BuddhistEra + +* BuddhistEra extiende la API `dayjs().format` para añadir opciones de formato relacionadas con la Era Budista (B.E.) +* La Era Budista es un sistema de numeración anual, usado principalmente en los países del sudeste del continente asiático: Camboya, Laos, Birmania y Tailandia,así como en Sri Lanka y entre la población china de Malasia y Singapur, por razones religiosas o en eventos oficiales ([Wikipedia](https://en.wikipedia.org/wiki/Buddhist_calendar)) +* Para calcular manualmente el año de la BE tan sólo hemos de sumar 543 al año. Por ejemplo, el 26 Mayo 1977 AD/EC debe mostrarse como 26 Mayo 2520 BE (1977 + 543) + +```javascript +import buddhistEra from 'dayjs/plugin/buddhistEra' + +dayjs.extend(buddhistEra) + +dayjs().format('BBBB BB') +``` + +Lista de formatos añadidos: + +| Formato | Salida | Descripción | +| ------- | ---------------- | ------------------------------------- | +| `BBBB` | 2561 | Año BE completo (Año + 543) | +| `BB` | 61 | Año BE con 2 dígitos | + +### WeekOfYear + +* WeekOfYear añade la API `.week()`, que devuelve un dato de tipo `number` indicando la semana del año correspondiente a la fecha del objeto `Dayjs`. + +```javascript +import weekOfYear from 'dayjs/plugin/weekOfYear' + +dayjs.extend(weekOfYear) + +dayjs('06/27/2018').week() // 26 +``` + +### IsBetween + +* IsBetween añade la API `.isBetween()`, que devuelve un dato de tipo `boolean` indicando si una fecha se encuentra o no entre otras dos dadas. + +```javascript +import isBetween from 'dayjs/plugin/isBetween' + +dayjs.extend(isBetween) + +dayjs('2010-10-20').isBetween('2010-10-19', dayjs('2010-10-25')); // true +``` + +## Personalización + +Puedes construir tu propio complemento de Day.js para cubrir tus necesidades. + +Siéntete libre de abrir una pull request para compartir tu complemento. + +Plantilla de un complemento de Day.js. + +```javascript +export default (option, dayjsClass, dayjsFactory) => { + // extensión de dayjs() + // p.ej.: se añade dayjs().isSameOrBefore() + dayjsClass.prototype.isSameOrBefore = function (arguments) {} + + // extensión de dayjs + // p.ej.: se añade dayjs.utc() + dayjsFactory.utc = (arguments) => {} + + // sobrescritura de la API existente + // p.ej.: extensión de dayjs().format() + const oldFormat = dayjsClass.prototype.format + dayjsClass.prototype.format = function (arguments) { + // result contiene el formato original + const result = oldFormat(arguments) + // se ha de devolver result modificado + } +} +``` \ No newline at end of file diff --git a/docs/es-es/README-es-es.md b/docs/es-es/README-es-es.md new file mode 100644 index 000000000..7172189b9 --- /dev/null +++ b/docs/es-es/README-es-es.md @@ -0,0 +1,116 @@ +

Day.js

+

Alternativa ligera, 2kB, a Moment.js, con la misma API moderna

+
+

+ Gzip Size + NPM Version + Build Status + Codecov + License +
+ + Sauce Test Status + +

+ +> Day.js es una librería JavaScript minimalista que analiza, valida, manipula y muestra fechas y horas para navegadores modernos, manteniendo una API casi totalmente compatible con Moment.js. Si usas Moment.js, ya sabes usar Day.js. + +```js +dayjs().startOf('month').add(1, 'day').set('year', 2018).format('YYYY-MM-DD HH:mm:ss'); +``` + +* 🕒 API & patrones familiares para usuarios de Moment.js +* 💪 Inmutable +* 🔥 Encadenable +* 🌐 Soporta I18n +* 📦 Mini librería de 2kb +* 👫 Compatible con todos los navegadores + +--- + +# Primeros pasos + +## Instalación + +```console +npm install dayjs --save +``` + +📚[Guía de instalación](./Installation.md) + +## API + +Usar las API de Day.js para analizar, validar, manipular y mostrar fechas y horas es muy sencillo. + +```javascript +dayjs('2018-08-08') // analiza + +dayjs().format('{YYYY} MM-DDTHH:mm:ss SSS [Z] A') // da formato + +dayjs().set('month', 3).month() // get & set + +dayjs().add(1, 'year') // manipula + +dayjs().isBefore(dayjs()) // consulta +``` + +📚[Referencia de la API](./API-reference.md) + +## I18n + +Day.js soporta muy bien la internacionalización. + +Pero no se incluirá en tu compilación final a menos que así lo requieras. + +```javascript +import 'dayjs/locale/es' // carga bajo demanda + +dayjs.locale('es') // usar la configuración regional española globalmente + +dayjs('2018-05-05').locale('zh-cn').format() // usar el chino simplificado en una instancia concreta +``` + +📚[Internacionalización](./I18n.md) + +## Complementos + +Un complemento o *plugin* es un módulo independiente que puede añadirse a Day.js para extender su funcionalidad o añadir nuevas características. + +```javascript +import advancedFormat from 'dayjs/plugin/advancedFormat' // carga bajo demanda + +dayjs.extend(advancedFormat) // uso del complemento + +dayjs().format('Q Do k kk X x') // ahora tenemos más formatos disponibles +``` + +📚[Lista de complementos](./Plugin.md) + +## Patrocinadores + +Apoya a este proyecto convirtiéndote en un patrocinador. Tu logo aparecerá aquí, enlazado a tu sitio web. [[Conviértete en un patrocinador](https://opencollective.com/dayjs#sponsor)] + +[![Avatar patrocinador 1](https://opencollective.com/dayjs/sponsor/0/avatar.svg)](https://opencollective.com/dayjs/sponsor/0/website) +[![Avatar patrocinador 2](https://opencollective.com/dayjs/sponsor/1/avatar.svg)](https://opencollective.com/dayjs/sponsor/1/website) +[![Avatar patrocinador 3](https://opencollective.com/dayjs/sponsor/2/avatar.svg)](https://opencollective.com/dayjs/sponsor/2/website) + +## Contribuidores + +Este proyecto existe gracias a todas las personas que contribuyen en él. + +Por favor, danos una 💖 estrella 💖 para apoyarnos. Gracias. + +¡Y gracias también a todos nuestros micromecenas! 🙏 + + +## Licencia + +Day.js está licenciada bajo la [Licencia MIT](./LICENSE). diff --git a/src/locale/es-es.js b/src/locale/es-es.js new file mode 100644 index 000000000..ee630fdaa --- /dev/null +++ b/src/locale/es-es.js @@ -0,0 +1,27 @@ +import dayjs from 'dayjs' + +const locale = { + name: 'es-es', + weekdays: 'Domingo_Lunes_Martes_Miércoles_Jueves_Viernes_Sábado'.split('_'), + months: 'Enero_Febrero_Marzo_Abril_Mayo_Junio_Julio_Agosto_Septiembre_Octubre_Noviembre_Diciembre'.split('_'), + relativeTime: { + future: 'en %s', + past: 'hace %s', + s: 'unos segundos', + m: 'un minuto', + mm: '%d minutos', + h: 'una hora', + hh: '%d horas', + d: 'un día', + dd: '%d días', + M: 'un mes', + MM: '%d meses', + y: 'un año', + yy: '%d años' + }, + ordinal: n => `${n}º` +} + +dayjs.locale(locale, null, true) + +export default locale