2017-01-26 20:05:32 +03:00
import hasOwnProperty from './hasOwnProperty' ;
2016-08-01 14:21:32 +03:00
const dateLocales = {
2016-11-09 20:34:54 +03:00
de : {
months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember' . split ( '_' ) ,
monthsShort : 'Jan_Feb_März_Apr_Mai_Juni_Juli_Aug_Sept_Okt_Nov_Dez' . split ( '_' ) ,
2016-11-09 20:40:53 +03:00
weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag' . split ( '_' ) ,
weekdaysShort : 'So_Mo_Di_Mi_Do_Fr_Sa' . split ( '_' ) ,
2017-01-26 20:05:32 +03:00
weekdaysLetter : 'S_M_D_M_D_F_S' . split ( '_' ) ,
2016-11-09 20:34:54 +03:00
} ,
2016-11-22 11:52:00 +03:00
no : {
2016-11-11 16:56:40 +03:00
months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember' . split ( '_' ) ,
monthsShort : 'jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.' . split ( '_' ) ,
weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag' . split ( '_' ) ,
2016-11-11 18:21:14 +03:00
weekdaysShort : 'søn_man_tir_ons_tor_fre_lør' . split ( '_' ) ,
2017-01-26 20:05:32 +03:00
weekdaysLetter : [ ] ,
2016-11-11 16:56:40 +03:00
} ,
2016-08-01 14:21:32 +03:00
en : {
months : 'January_February_March_April_May_June_July_August_September_October_November_December' . split ( '_' ) ,
monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec' . split ( '_' ) ,
weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday' . split ( '_' ) ,
weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat' . split ( '_' ) ,
2017-01-26 20:05:32 +03:00
weekdaysLetter : [ ] ,
2016-08-01 14:21:32 +03:00
} ,
es : {
months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre' . split ( '_' ) ,
monthsShort : 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic' . split ( '_' ) ,
weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado' . split ( '_' ) ,
weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.' . split ( '_' ) ,
2017-01-26 20:05:32 +03:00
weekdaysLetter : 'D_L_M_X_J_V_S' . split ( '_' ) ,
2016-08-01 14:21:32 +03:00
} ,
af : {
months : 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember' . split ( '_' ) ,
monthsShort : 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des' . split ( '_' ) ,
weekdays : 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag' . split ( '_' ) ,
weekdaysShort : 'Son_Maa_Din_Woe_Don_Vry_Sat' . split ( '_' ) ,
2017-01-26 20:05:32 +03:00
weekdaysLetter : [ ] ,
2016-08-01 14:21:32 +03:00
} ,
ar : {
2016-08-01 14:44:26 +03:00
months : [ 'كانون الثاني يناير' , 'شباط فبراير' , 'آذار مارس' , 'نيسان أبريل' , 'أيار مايو' , 'حزيران يونيو' , 'تموز يوليو' , 'آب أغسطس' , 'أيلول سبتمبر' , 'تشرين الأول أكتوبر' , 'تشرين الثاني نوفمبر' , 'كانون الأول ديسمبر' ] ,
monthsShort : [ 'كانون الثاني يناير' , 'شباط فبراير' , 'آذار مارس' , 'نيسان أبريل' , 'أيار مايو' , 'حزيران يونيو' , 'تموز يوليو' , 'آب أغسطس' , 'أيلول سبتمبر' , 'تشرين الأول أكتوبر' , 'تشرين الثاني نوفمبر' , 'كانون الأول ديسمبر' ] ,
2016-08-01 14:21:32 +03:00
weekdays : 'ا لأحد_ا لإثنين_ا لثلا ثا ء_ا لأربعا ء_ا لخميس_ا لجمعة_ا لسبت' . split ( '_' ) ,
weekdaysShort : 'أحد_إثنين_ثلا ثا ء_أربعا ء_خميس_جمعة_سبت' . split ( '_' ) ,
2017-01-26 20:05:32 +03:00
weekdaysLetter : [ ] ,
2016-08-01 14:21:32 +03:00
} ,
be : {
months : 'с ту дзе нь_люты_с а ка ві к_кр а с а ві к_тр а ве нь_чэр ве нь_лі пе нь_жні ве нь_ве р а с е нь_ка с тр ычні к_лі с та па д_с не жа нь' . split ( '_' ) ,
monthsShort : 'с ту д_лют_с а к_кр а с _тр а в_чэр в_лі п_жні в_ве р _ка с т_лі с т_с не ж' . split ( '_' ) ,
weekdays : 'нядзе ля_па нядзе ла к_а ўто р а к_с е р а да _ча цве р _пятні ца _с у б о та ' . split ( '_' ) ,
weekdaysShort : 'нд_пн_а т_с р _чц_пт_с б ' . split ( '_' ) ,
2017-01-26 20:05:32 +03:00
weekdaysLetter : [ ] ,
2016-08-01 14:21:32 +03:00
} ,
bg : {
months : 'яну а р и_фе вр у а р и_ма р т_а пр ил_ма й_юни_юли_а вг у с т_с е пте мвр и_о кто мвр и_но е мвр и_де ке мвр и' . split ( '_' ) ,
monthsShort : 'янр _фе в_ма р _а пр _ма й_юни_юли_а вг _с е п_о кт_но е _де к' . split ( '_' ) ,
weekdays : 'не де ля_по не де лник_вто р ник_с р яда _че твър тък_пе тък_с ъб о та ' . split ( '_' ) ,
weekdaysShort : 'не д_по н_вто _с р я_че т_пе т_с ъб ' . split ( '_' ) ,
2017-01-26 20:05:32 +03:00
weekdaysLetter : [ ] ,
2016-08-01 14:21:32 +03:00
} ,
bn : {
months : 'জানুয়ারী_ফেবুয়ারী_মার্চ_এপ্রিল_মে_জুন_জুলাই_অগাস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর' . split ( '_' ) ,
monthsShort : 'জানু_ফেব_মার্চ_এপর_মে_জুন_জুল_অগ_সেপ্ট_অক্টো_নভ_ডিসেম্' . split ( '_' ) ,
weekdays : 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পত্তিবার_শুক্রবার_শনিবার' . split ( '_' ) ,
weekdaysShort : 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পত্তি_শুক্র_শনি' . split ( '_' ) ,
2017-01-26 20:05:32 +03:00
weekdaysLetter : [ ] ,
2016-08-01 14:21:32 +03:00
} ,
bo : {
months : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ' . split ( '_' ) ,
monthsShort : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ' . split ( '_' ) ,
weekdays : 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་' . split ( '_' ) ,
weekdaysShort : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་' . split ( '_' ) ,
2017-01-26 20:05:32 +03:00
weekdaysLetter : [ ] ,
2016-08-01 14:21:32 +03:00
} ,
br : {
months : 'Genver_C\'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu' . split ( '_' ) ,
monthsShort : 'Gen_C\'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker' . split ( '_' ) ,
weekdays : 'Sul_Lun_Meurzh_Merc\'her_Yaou_Gwener_Sadorn' . split ( '_' ) ,
weekdaysShort : 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad' . split ( '_' ) ,
2017-01-26 20:05:32 +03:00
weekdaysLetter : [ ] ,
2016-08-01 14:21:32 +03:00
} ,
bs : {
months : 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar' . split ( '_' ) ,
monthsShort : 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.' . split ( '_' ) ,
weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota' . split ( '_' ) ,
weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.' . split ( '_' ) ,
2017-01-26 20:05:32 +03:00
weekdaysLetter : [ ] ,
2016-08-01 14:21:32 +03:00
} ,
ca : {
months : 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre' . split ( '_' ) ,
monthsShort : 'gen._febr._mar._abr._mai._jun._jul._ag._set._oct._nov._des.' . split ( '_' ) ,
weekdays : 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte' . split ( '_' ) ,
weekdaysShort : 'dg._dl._dt._dc._dj._dv._ds.' . split ( '_' ) ,
2017-01-26 20:05:32 +03:00
weekdaysLetter : 'Dg_Dl_Dt_Dc_Dj_Dv_Ds' . split ( '_' ) ,
2016-08-01 14:21:32 +03:00
} ,
gl : {
months : 'Xaneiro_Febreiro_Marzo_Abril_Maio_Xuño_Xullo_Agosto_Setembro_Outubro_Novembro_Decembro' . split ( '_' ) ,
monthsShort : 'Xan._Feb._Mar._Abr._Mai._Xuñ._Xul._Ago._Set._Out._Nov._Dec.' . split ( '_' ) ,
weekdays : 'Domingo_Luns_Martes_Mércores_Xoves_Venres_Sábado' . split ( '_' ) ,
weekdaysShort : 'Dom._Lun._Mar._Mér._Xov._Ven._Sáb.' . split ( '_' ) ,
2017-01-26 20:05:32 +03:00
weekdaysLetter : 'Do_Lu_Ma_Mé_Xo_Ve_Sá' . split ( '_' ) ,
2016-08-01 14:21:32 +03:00
} ,
eu : {
months : 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua' . split ( '_' ) ,
monthsShort : 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.' . split ( '_' ) ,
weekdays : 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata' . split ( '_' ) ,
weekdaysShort : 'ig._al._ar._az._og._ol._lr.' . split ( '_' ) ,
2017-01-26 20:05:32 +03:00
weekdaysLetter : 'ig_al_ar_az_og_ol_lr' . split ( '_' ) ,
2016-08-01 14:21:32 +03:00
} ,
pt : {
months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro' . split ( '_' ) ,
monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez' . split ( '_' ) ,
weekdays : 'Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado' . split ( '_' ) ,
weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb' . split ( '_' ) ,
2017-01-26 20:05:32 +03:00
weekdaysLetter : [ ] ,
2016-08-01 14:21:32 +03:00
} ,
it : {
months : 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre' . split ( '_' ) ,
monthsShort : 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic' . split ( '_' ) ,
weekdays : 'Domenica_Lunedì_Martedì_Mercoledì_Giovedì_Venerdì_Sabato' . split ( '_' ) ,
weekdaysShort : 'Dom_Lun_Mar_Mer_Gio_Ven_Sab' . split ( '_' ) ,
2017-01-26 20:05:32 +03:00
weekdaysLetter : [ ] ,
2016-08-01 14:21:32 +03:00
} ,
fr : {
months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre' . split ( '_' ) ,
monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.' . split ( '_' ) ,
weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi' . split ( '_' ) ,
weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.' . split ( '_' ) ,
2017-01-26 20:05:32 +03:00
weekdaysLetter : [ ] ,
2016-09-12 13:34:16 +03:00
} ,
ru : {
2016-10-10 10:46:01 +03:00
months : 'Янва р ь_Фе вр а ль_М а р т_А пр е ль_М а й_Июнь_Июль_А вг у с т_С е нтяб р ь_О ктяб р ь_Н о яб р ь_Де ка б р ь' . split ( '_' ) ,
2016-09-12 13:34:16 +03:00
monthsShort : 'Янв_Фе в_М а р _А пр _М а й_Июн_Июл_А вг _С е н_О кт_Н о я_Де к' . split ( '_' ) ,
weekdays : 'В о с кр е с е нье _По не де льник_В то р ник_С р е да _Че тве р г _Пятница _С у б б о та ' . split ( '_' ) ,
weekdaysShort : 'В с _Пн_В т_С р _Чт_Пт_С б ' . split ( '_' ) ,
2017-01-26 20:05:32 +03:00
weekdaysLetter : [ ] ,
2016-10-10 11:08:30 +03:00
} ,
ua : {
months : 'С і че нь_Лютий_Бе р е зе нь_К ві те нь_Т р а ве нь_Че р ве нь_Липе нь_С е р пе нь_В е р е с е нь_Жо вте нь_Лис то па д_Гр у де нь' . split ( '_' ) ,
monthsShort : 'С і ч_Лют_Бе р е з_К ві т_Т р а в_Че р в_Лип_С е р п_В е р е с _Жо вт_Лис то п_Гр у д' . split ( '_' ) ,
weekdays : 'Н е ді ля_По не ді ло к_В і вто р о к_С е р е да _Че тве р _П’ ятниця_С у б о та ' . split ( '_' ) ,
weekdaysShort : 'Н д_Пн_В т_С р _Чт_Пт_С б ' . split ( '_' ) ,
2017-01-26 20:05:32 +03:00
weekdaysLetter : [ ] ,
} ,
2017-04-02 15:08:45 +03:00
'zh-cn' : {
months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月' . split ( '_' ) ,
monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月' . split ( '_' ) ,
weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六' . split ( '_' ) ,
weekdaysShort : '周日_周一_周二_周三_周四_周五_周六' . split ( '_' ) ,
weekdaysLetter : '日_一_二_三_四_五_六' . split ( '_' ) ,
} ,
'zh-hk' : {
months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月' . split ( '_' ) ,
monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月' . split ( '_' ) ,
weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六' . split ( '_' ) ,
weekdaysShort : '週日_週一_週二_週三_週四_週五_週六' . split ( '_' ) ,
weekdaysLetter : '日_一_二_三_四_五_六' . split ( '_' ) ,
} ,
'zh-tw' : {
months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月' . split ( '_' ) ,
monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月' . split ( '_' ) ,
weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六' . split ( '_' ) ,
weekdaysShort : '週日_週一_週二_週三_週四_週五_週六' . split ( '_' ) ,
weekdaysLetter : '日_一_二_三_四_五_六' . split ( '_' ) ,
} ,
2016-08-01 14:21:32 +03:00
} ;
2016-11-22 11:52:00 +03:00
2016-03-08 23:40:16 +03:00
const time = {
2017-01-26 20:05:32 +03:00
getDaysInMonth ( d ) {
2015-10-23 11:11:40 +03:00
const resultDate = this . getFirstDayOfMonth ( d ) ;
2015-09-05 02:11:51 +03:00
resultDate . setMonth ( resultDate . getMonth ( ) + 1 ) ;
resultDate . setDate ( resultDate . getDate ( ) - 1 ) ;
return resultDate . getDate ( ) ;
} ,
2017-01-26 20:05:32 +03:00
getFirstDayOfMonth ( d ) {
2015-09-05 02:11:51 +03:00
return new Date ( d . getFullYear ( ) , d . getMonth ( ) , 1 ) ;
} ,
2017-01-26 20:05:32 +03:00
getFirstWeekDay ( d ) {
2015-09-05 02:11:51 +03:00
return this . getFirstDayOfMonth ( d ) . getDay ( ) ;
} ,
2017-01-26 20:05:32 +03:00
getTimeMode ( d ) {
2015-09-05 02:11:51 +03:00
return d . getHours ( ) >= 12 ? 'pm' : 'am' ;
} ,
2017-01-26 20:05:32 +03:00
getFullMonth ( d , locale = 'en' ) {
2015-10-23 11:11:40 +03:00
const month = d . getMonth ( ) ;
2016-08-01 14:21:32 +03:00
const l = ( ( typeof locale === 'string' ) ? dateLocales [ locale ] : locale ) || dateLocales . en ;
2017-01-26 20:05:32 +03:00
return ( hasOwnProperty ( l , 'months' ) )
? l . months [ month ] || 'Unknown'
: 'Unknown' ;
2015-09-05 02:11:51 +03:00
} ,
2017-01-26 20:05:32 +03:00
getShortMonth ( d , locale = 'en' ) {
2015-10-23 11:11:40 +03:00
const month = d . getMonth ( ) ;
2016-08-01 14:21:32 +03:00
const l = ( ( typeof locale === 'string' ) ? dateLocales [ locale ] : locale ) || dateLocales . en ;
2017-01-26 20:05:32 +03:00
return ( hasOwnProperty ( l , 'monthsShort' ) )
? l . monthsShort [ month ] || 'Unknown'
: 'Unknown' ;
2015-09-05 02:11:51 +03:00
} ,
2017-01-26 20:05:32 +03:00
getFullDayOfWeek ( day , locale = 'en' ) {
2016-08-01 14:21:32 +03:00
const l = ( ( typeof locale === 'string' ) ? dateLocales [ locale ] : locale ) || dateLocales . en ;
2017-01-26 20:05:32 +03:00
return ( hasOwnProperty ( l , 'weekdays' ) )
? l . weekdays [ day ] || 'Unknown'
: 'Unknown' ;
2015-09-05 02:11:51 +03:00
} ,
2017-01-26 20:05:32 +03:00
getShortDayOfWeek ( day , locale = 'en' ) {
2016-08-01 14:21:32 +03:00
const l = ( ( typeof locale === 'string' ) ? dateLocales [ locale ] : locale ) || dateLocales . en ;
2017-01-26 20:05:32 +03:00
return ( hasOwnProperty ( l , 'weekdaysShort' ) )
? l . weekdaysShort [ day ] || 'Unknown'
: 'Unknown' ;
2016-08-01 14:21:32 +03:00
} ,
2017-01-26 20:05:32 +03:00
getDayOfWeekLetter ( day , locale = 'en' ) {
2016-08-01 14:21:32 +03:00
const l = ( ( typeof locale === 'string' ) ? dateLocales [ locale ] : locale ) || dateLocales . en ;
2017-01-26 20:05:32 +03:00
return ( hasOwnProperty ( l , 'weekdaysLetter' ) )
? l . weekdaysLetter [ day ] || this . getFullDayOfWeek ( day , locale ) . charAt ( 0 )
: 'Unknown' ;
2015-09-05 02:11:51 +03:00
} ,
2017-01-26 20:05:32 +03:00
clone ( d ) {
2015-09-05 02:11:51 +03:00
return new Date ( d . getTime ( ) ) ;
} ,
2017-01-26 20:05:32 +03:00
cloneAsDate ( d ) {
2015-10-23 11:11:40 +03:00
const clonedDate = this . clone ( d ) ;
2015-09-05 02:11:51 +03:00
clonedDate . setHours ( 0 , 0 , 0 , 0 ) ;
return clonedDate ;
} ,
2017-01-26 20:05:32 +03:00
isDateObject ( d ) {
2015-09-05 02:11:51 +03:00
return d instanceof Date ;
} ,
2017-01-26 20:05:32 +03:00
addDays ( d , days ) {
2015-10-23 11:11:40 +03:00
const newDate = this . clone ( d ) ;
2015-09-05 02:11:51 +03:00
newDate . setDate ( d . getDate ( ) + days ) ;
return newDate ;
} ,
2017-01-26 20:05:32 +03:00
addMonths ( d , months ) {
2015-10-23 11:11:40 +03:00
const newDate = this . clone ( d ) ;
2016-06-15 05:45:35 +03:00
newDate . setMonth ( d . getMonth ( ) + months , 1 ) ;
2015-09-05 02:11:51 +03:00
return newDate ;
} ,
2017-01-26 20:05:32 +03:00
addYears ( d , years ) {
2015-10-23 11:11:40 +03:00
const newDate = this . clone ( d ) ;
2015-09-05 02:11:51 +03:00
newDate . setFullYear ( d . getFullYear ( ) + years ) ;
return newDate ;
} ,
2017-01-26 20:05:32 +03:00
setDay ( d , day ) {
2015-10-23 11:11:40 +03:00
const newDate = this . clone ( d ) ;
2015-09-05 02:11:51 +03:00
newDate . setDate ( day ) ;
return newDate ;
} ,
2017-01-26 20:05:32 +03:00
setMonth ( d , month ) {
2015-10-23 11:11:40 +03:00
const newDate = this . clone ( d ) ;
2015-09-05 02:11:51 +03:00
newDate . setMonth ( month ) ;
return newDate ;
} ,
2017-01-26 20:05:32 +03:00
setYear ( d , year ) {
2015-10-23 11:11:40 +03:00
const newDate = this . clone ( d ) ;
2015-09-05 02:11:51 +03:00
newDate . setFullYear ( year ) ;
return newDate ;
} ,
2017-01-26 20:05:32 +03:00
setHours ( d , hours ) {
2015-10-23 11:11:40 +03:00
const newDate = this . clone ( d ) ;
2015-09-05 02:11:51 +03:00
newDate . setHours ( hours ) ;
return newDate ;
} ,
2017-01-26 20:05:32 +03:00
setMinutes ( d , minutes ) {
2015-10-23 11:11:40 +03:00
const newDate = this . clone ( d ) ;
2015-09-05 21:29:06 +03:00
newDate . setMinutes ( minutes ) ;
2015-09-05 02:11:51 +03:00
return newDate ;
} ,
2017-01-26 20:05:32 +03:00
toggleTimeMode ( d ) {
2015-10-23 11:11:40 +03:00
const newDate = this . clone ( d ) ;
const hours = newDate . getHours ( ) ;
2015-09-05 02:11:51 +03:00
newDate . setHours ( hours - ( hours > 12 ? - 12 : 12 ) ) ;
return newDate ;
2015-09-05 23:31:17 +03:00
} ,
2017-01-26 20:05:32 +03:00
formatTime ( date , format ) {
2015-09-05 23:31:17 +03:00
let hours = date . getHours ( ) ;
let mins = date . getMinutes ( ) . toString ( ) ;
if ( format === 'ampm' ) {
2015-10-23 11:11:40 +03:00
const isAM = hours < 12 ;
const additional = isAM ? ' am' : ' pm' ;
2015-09-05 23:31:17 +03:00
2017-01-26 20:05:32 +03:00
hours %= 12 ;
2015-09-05 23:31:17 +03:00
hours = ( hours || 12 ) . toString ( ) ;
2017-01-26 20:05:32 +03:00
if ( mins . length < 2 ) mins = ` 0 ${ mins } ` ;
2015-09-05 23:31:17 +03:00
2017-01-26 20:05:32 +03:00
return hours + ( mins === '00' ? '' : ` : ${ mins } ` ) + additional ;
2015-09-05 23:31:17 +03:00
}
hours = hours . toString ( ) ;
2017-01-26 20:05:32 +03:00
if ( hours . length < 2 ) hours = ` 0 ${ hours } ` ;
if ( mins . length < 2 ) mins = ` 0 ${ mins } ` ;
return ` ${ hours } : ${ mins } ` ;
2015-11-16 18:54:05 +03:00
} ,
2017-01-26 20:05:32 +03:00
dateOutOfRange ( date , minDate , maxDate ) {
2015-11-16 18:54:05 +03:00
return ( ( minDate && ! ( date >= minDate ) ) || ( maxDate && ! ( date <= maxDate ) ) ) ;
2016-03-08 23:40:16 +03:00
} ,
2017-01-26 20:05:32 +03:00
closestDate ( to , date1 , date2 ) {
2016-07-21 17:47:03 +03:00
const toTime = to . getTime ( ) ;
const diff1 = Math . abs ( toTime - date1 . getTime ( ) ) ;
const diff2 = Math . abs ( toTime - date2 . getTime ( ) ) ;
return diff1 < diff2 ? date1 : date2 ;
} ,
2017-01-26 20:05:32 +03:00
formatDate ( date , locale = 'en' ) {
2016-08-01 14:21:32 +03:00
if ( locale === 'en' ) {
return ` ${ date . getDate ( ) } ${ time . getFullMonth ( date , locale ) } ${ date . getFullYear ( ) } ` ;
}
2017-01-26 20:05:32 +03:00
return ` ${ date . getDate ( ) } / ${ date . getMonth ( ) + 1 } / ${ date . getFullYear ( ) } ` ;
} ,
2015-09-05 02:11:51 +03:00
} ;
2016-03-08 23:40:16 +03:00
export default time ;