/momentkh

Khmer calendar

Primary LanguageJavaScriptMIT LicenseMIT

NPM version GitHub issues GitHub forks GitHub stars GitHub license

momentkh

momentkh is an add-on feature to moment js library

Install πŸ—œ

$ npm install moment --save
$ npm install @thyrith/momentkh --save

How to use πŸ›«

This library is built depends on moment.js popular library. We added some functionality to make it easier to work with Khmer date format.

const moment = require('moment');
// Add our features to your preferred moment.js version
require('@thyrith/momentkh')(moment);

// From now on, your moment js is transformed

let today = moment();

console.log(today);
// Display date today as moment js object
// For example: moment("2018-12-15T14:49:38.586")

let khmerDate = today.toLunarDate();

console.log(khmerDate);
// Display khmer date
// For example: αžαŸ’αž„αŸƒαžŸαŸ…αžšαŸ αŸ¨αž€αžΎαž αžαŸ‚αž˜αž·αž‚αžŸαž·αžš αž†αŸ’αž“αžΆαŸ†αž… αžŸαŸ†αžšαžΉαž‘αŸ’αž’αžŸαŸαž€ αž–αž»αž‘αŸ’αž’αžŸαž€αžšαžΆαž‡ ្αŸ₯៦្

Added Functionality 🎑

Attributes of moment instance

Name Parameter Description Example
toLunarDate empty or String display format as Khmer lunar date moment().toLunarDate();
khDay empty display khmer day index moment().khDay();
0 -> αŸ‘αž€αžΎαž
1 -> αŸ’αž€αžΎαž
2 -> αŸ£αž€αžΎαž
...
15 -> αŸ‘αžšαŸ„αž…
16 -> αŸ’αžšαŸ„αž…
17 -> αŸ£αžšαŸ„αž…
...
khMonth empty display khmer month index moment.khMonth();
0 -> αž˜αž·αž‚αžŸαž·αžš
1 -> αž”αž»αžŸαŸ’αžŸ
2 -> αž˜αžΆαžƒ
3 -> αž•αž›αŸ’αž‚αž»αž“
4 -> αž…αŸαžαŸ’αžš
5 -> αž–αž·αžŸαžΆαž
6 -> αž‡αŸαžŸαŸ’αž‹
7 -> ធអសអឍ
8 -> αžŸαŸ’αžšαžΆαž–αžŽαŸ
9 -> αž—αž‘αŸ’αžšαž”αž‘
10 -> αž’αžŸαŸ’αžŸαž»αž‡
11 -> αž€αž€αŸ’αžŠαž·αž€
12 -> αž”αž‹αž˜αžΆαžŸαžΆαž
13 -> αž‘αž»αžαž·αž™αžΆαžŸαžΆαž
khYear empty display Buddhist Era year moment().khYear();
Alias
Name Original
toKhDate, tokhdate toLunarDate

Attributes of moment

Name Parameter Description Example
getKhNewYearMoment Integer Return moment.js object. Giving the moment of Khmer New Year. (αž–αŸαž›αž‘αŸαžœαžαžΆαž…αž»αŸ‡) moment.getKhNewYearMoment(2019);
readLunarDate*(not yet working on this)* String or Object Return moment.js object. Just same as calling: moment('13/04/2018', 'dd/mm/yyyy'); for Gregorian date
moment.readLunarDate('៑αŸ₯αž€αžΎαž αž–αž·αžŸαžΆαž αž–.ស. ្αŸ₯αŸ₯αŸ₯');
Alias
Name Original
khDate, khdate readLunarDate

Format

By default, it will return the format as shown in example above. However, you can also customize your format.

// Use moment.js as usual. Documentaion: momentjs.com
let myBirthday = moment('4/3/1992', 'd/m/yyy');

myBirthday.toLunarDate('dN αžαŸ’αž„αŸƒW αžαŸ‚m αž–.ស. b');
// αŸ¦αž€αžΎαž αžαŸ’αž„αŸƒαž–αŸ’αžšαž αžŸαŸ’αž”αžαž·αŸ αžαŸ‚αž˜αž·αž‚αžŸαž·αžš αž–.ស. ្αŸ₯៦្'
Format Description Example
W αžαŸ’αž„αŸƒαž“αŸƒαžŸαž”αŸ’αžŠαžΆαž αŸ αž’αž„αŸ’αž‚αžΆαžš
w αžαŸ’αž„αŸƒαž“αŸƒαžŸαž”αŸ’αžŠαžΆαž αŸαž€αžΆαžαŸ‹ ធ
d αžαŸ’αž„αŸƒαž‘αžΈ αž…αžΆαž”αŸ‹αž–αžΈαž›αŸαž ៑ αžŠαž›αŸ‹ ៑αŸ₯ ៑
D αžαŸ’αž„αŸƒαž‘αžΈ αž…αžΆαž”αŸ‹αž–αžΈαž›αŸαž 0៑ αžŠαž›αŸ‹ ៑αŸ₯ ០៑
n αž€αžΎαž ឬ αžšαŸ„αž… αž€
N αž€αžΎαž ឬ αžšαŸ„αž… αž€αžΎαž
o αžšαž”αŸ€αž”αžŸαžšαžŸαŸαžšαžαŸ’αž›αžΈαž’αŸ†αž–αžΈαžαŸ’αž„αŸƒαž‘αžΈ ᧑ (αž˜αžΆαž“αž“αŸαž™αžαžΆ αŸ‘αž€αžΎαž)
m αžαŸ‚ αž˜αž·αž‚αžŸαž·αžš ​
a αž†αŸ’αž“αžΆαŸ†αžŸαžαŸ’αžœ αžšαž€αžΆ
e αžŸαŸαž€ αž―αž€αžŸαŸαž€
b αž†αŸ’αž“αžΆαŸ†αž–αž»αž‘αŸ’αž’αžŸαž€αžšαžΆαž‡ ្αŸ₯αŸ₯៦
c αž†αŸ’αž“αžΆαŸ†αž‚αŸ’αžšαž·αžŸαŸ’αžαžŸαž€αžšαžΆαž‡ ្០៑៩
j αž†αŸ’αž“αžΆαŸ†αž…αž»αž›αŸ’αž›αžŸαž€αžšαžΆαž‡ ៑ៀ៦៣

Bug Report πŸžπŸœπŸ¦—πŸ•·πŸ•ΈπŸ¦‚πŸ¦ŸπŸ›πŸŒπŸ’£

I know there will be a lot of error.

Contribute πŸ’‘

Welcome pull request

References