Skip to content

Commit

Permalink
Merge pull request #297 from gecko655/jp-reiwa-gannen
Browse files Browse the repository at this point in the history
Implement 令和('reiwa' Japanese era) (2019〜) and 元年(the 1st year of the year)
  • Loading branch information
wanasit committed Jul 28, 2019
2 parents 52c39c0 + 33fc8dc commit af907f5
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 5 deletions.
14 changes: 10 additions & 4 deletions src/parsers/ja/JPStandardParser.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ var Parser = require('../parser').Parser;
var ParsedResult = require('../../result').ParsedResult;

var util = require('../../utils/JP');
var PATTERN = /(?:(同|((昭和|平成)?([0-90-9]{2,4})))年\s*)?([0-90-9]{1,2})月\s*([0-90-9]{1,2})日/i;
var PATTERN = /(?:(同|((昭和|平成|令和)?([0-90-9]{2,4}|元)))年\s*)?([0-90-9]{1,2})月\s*([0-90-9]{1,2})日/i;

var YEAR_GROUP = 2;
var ERA_GROUP = 3;
Expand Down Expand Up @@ -67,10 +67,16 @@ exports.Parser = function JPStandardParser(){

} else {
var year = match[YEAR_NUMBER_GROUP];
year = util.toHankaku(year);
year = parseInt(year);
if (year == '元') {
year = 1;
} else {
year = util.toHankaku(year);
year = parseInt(year);
}

if (match[ERA_GROUP] == '平成') {
if (match[ERA_GROUP] == '令和') {
year += 2018;
} else if (match[ERA_GROUP] == '平成') {
year += 1988;
} else if (match[ERA_GROUP] == '昭和') {
year += 1925;
Expand Down
19 changes: 18 additions & 1 deletion test/ja/ja_standard.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,24 @@ test("Test - Single Expression", function() {
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
}


var text = "主な株主(令和元年5月1日)";
var results = chrono.parse(text, new Date(2012,8-1,10));
expect(results.length).toBe(1)

var result = results[0];
if (result) {
expect(result.index).toBe(5)
expect(result.text).toBe('令和元年5月1日')

expect(result.start).not.toBeNull()
expect(result.start.get('year')).toBe(2019)
expect(result.start.get('month')).toBe(5)
expect(result.start.get('day')).toBe(1)

var resultDate = result.start.date();
var expectDate = new Date(2019, 5-1, 1, 12);
expect(expectDate.getTime()).toBeCloseTo(resultDate.getTime())
}
});


Expand Down

0 comments on commit af907f5

Please sign in to comment.