Skip to content

Commit

Permalink
Fix date ordinalNumber for ja/zh-CN/zh-TW (#1690)
Browse files Browse the repository at this point in the history
  • Loading branch information
skyuplam committed Apr 9, 2020
1 parent 3ee0792 commit c531935
Show file tree
Hide file tree
Showing 12 changed files with 171 additions and 85 deletions.
51 changes: 47 additions & 4 deletions src/locale/ja/_lib/localize/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,34 @@ var quarterValues = {

var monthValues = {
narrow: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'],
abbreviated: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'],
wide: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']
abbreviated: [
'1月',
'2月',
'3月',
'4月',
'5月',
'6月',
'7月',
'8月',
'9月',
'10月',
'11月',
'12月'
],
wide: [
'1月',
'2月',
'3月',
'4月',
'5月',
'6月',
'7月',
'8月',
'9月',
'10月',
'11月',
'12月'
]
}

var dayValues = {
Expand Down Expand Up @@ -90,8 +116,25 @@ var formattingDayPeriodValues = {
}
}

function ordinalNumber (dirtyNumber) {
function ordinalNumber(dirtyNumber, dirtyOptions) {
var number = Number(dirtyNumber)

// If ordinal numbers depend on context, for example,
// if they are different for different grammatical genders,
// use `options.unit`:
//
// var options = dirtyOptions || {}
// var unit = String(options.unit)
//
// where `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',
// 'day', 'hour', 'minute', 'second'

var options = dirtyOptions || {}
var unit = String(options.unit)

if (unit === 'date') {
return number + '日'
}
return number
}

Expand All @@ -106,7 +149,7 @@ var localize = {
quarter: buildLocalizeFn({
values: quarterValues,
defaultWidth: 'wide',
argumentCallback: function (quarter) {
argumentCallback: function(quarter) {
return Number(quarter) - 1
}
}),
Expand Down
21 changes: 17 additions & 4 deletions src/locale/ja/_lib/match/index.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index.js'
import buildMatchFn from '../../../_lib/buildMatchFn/index.js'

var matchOrdinalNumberPattern = /^第?\d+/i
var matchOrdinalNumberPattern = /^第?\d+(日)?/i
var parseOrdinalNumberPattern = /\d+/i

var matchEraPatterns = {
Expand Down Expand Up @@ -29,7 +29,20 @@ var matchMonthPatterns = {
wide: /^([123456789]|1[012])月/i
}
var parseMonthPatterns = {
any: [/^1/, /^2/, /^3/, /^4/, /^5/, /^6/, /^7/, /^8/, /^9/, /^10/, /^11/, /^12/]
any: [
/^1/,
/^2/,
/^3/,
/^4/,
/^5/,
/^6/,
/^7/,
/^8/,
/^9/,
/^10/,
/^11/,
/^12/
]
}

var matchDayPatterns = {
Expand Down Expand Up @@ -62,7 +75,7 @@ var match = {
ordinalNumber: buildMatchPatternFn({
matchPattern: matchOrdinalNumberPattern,
parsePattern: parseOrdinalNumberPattern,
valueCallback: function (value) {
valueCallback: function(value) {
return parseInt(value, 10)
}
}),
Expand All @@ -79,7 +92,7 @@ var match = {
defaultMatchWidth: 'wide',
parsePatterns: parseQuarterPatterns,
defaultParseWidth: 'any',
valueCallback: function (index) {
valueCallback: function(index) {
return index + 1
}
}),
Expand Down
1 change: 1 addition & 0 deletions src/locale/ja/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ import match from './_lib/match/index.js'
* @author Thomas Eilmsteiner [@DeMuu]{@link https://github.com/DeMuu}
* @author Yamagishi Kazutoshi [@ykzts]{@link https://github.com/ykzts}
* @author Luca Ban [@mesqueeb]{@link https://github.com/mesqueeb}
* @author Terrence Lam [@skyuplam]{@link https://github.com/skyuplam}
*/
var locale = {
code: 'ja',
Expand Down
4 changes: 2 additions & 2 deletions src/locale/ja/snapshot.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,8 @@
| | | 2019-12-01T12:13:14.015Z | 48 | 2019-11-25T00:00:00.000Z |
| ISO week of year | Io | 2019-01-01T12:13:14.015Z | 1 | 2018-12-31T00:00:00.000Z |
| | | 2019-12-01T12:13:14.015Z | 48 | 2019-11-25T00:00:00.000Z |
| Day of month | do | 2019-02-11T12:13:14.015Z | 11 | 2019-02-11T00:00:00.000Z |
| | | 2019-02-28T12:13:14.015Z | 28 | 2019-02-28T00:00:00.000Z |
| Day of month | do | 2019-02-11T12:13:14.015Z | 11 | 2019-02-11T00:00:00.000Z |
| | | 2019-02-28T12:13:14.015Z | 28 | 2019-02-28T00:00:00.000Z |
| Day of year | Do | 2019-02-11T12:13:14.015Z | 42 | 2019-02-11T00:00:00.000Z |
| | | 2019-12-31T12:13:14.015Z | 365 | 2019-12-31T00:00:00.000Z |
| Day of week (formatting) | E | 2019-02-11T12:13:14.015Z || 2019-02-11T00:00:00.000Z |
Expand Down
20 changes: 11 additions & 9 deletions src/locale/zh-CN/_lib/localize/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -143,16 +143,18 @@ function ordinalNumber(dirtyNumber, dirtyOptions) {
var options = dirtyOptions || {}
var unit = String(options.unit)

if (
unit === 'date' ||
unit === 'hour' ||
unit === 'minute' ||
unit === 'second'
) {
return number.toString()
switch (unit) {
case 'date':
return number.toString() + '日'
case 'hour':
return number.toString() + '时'
case 'minute':
return number.toString() + '分'
case 'second':
return number.toString() + '秒'
default:
return '第 ' + number.toString()
}

return '第 ' + number.toString()
}

var localize = {
Expand Down
14 changes: 7 additions & 7 deletions src/locale/zh-CN/_lib/match/index.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import buildMatchPatternFn from '../../../_lib/buildMatchPatternFn/index.js'
import buildMatchFn from '../../../_lib/buildMatchFn/index.js'

var matchOrdinalNumberPattern = /^(第\s*)?\d+/i
var matchOrdinalNumberPattern = /^(第\s*)?\d+(日|时|分|秒)?/i
var parseOrdinalNumberPattern = /\d+/i

var matchEraPatterns = {
Expand Down Expand Up @@ -43,8 +43,8 @@ var parseMonthPatterns = {
/^十二/i
],
any: [
/^一|[!\d]1[!\d]/i,
/^二|[!\d]2[!\d]/i,
/^一|1/i,
/^二|2/i,
/^三|3/i,
/^四|4/i,
/^五|5/i,
Expand All @@ -69,17 +69,17 @@ var parseDayPatterns = {
}

var matchDayPeriodPatterns = {
any: /^(上午|下午|午夜|[中正]午|早上|下午|晚上?|凌晨)/i
any: /^(上午?|下午?|午夜|[中正]午|早上?|下午|晚上?|凌晨|)/i
}
var parseDayPeriodPatterns = {
any: {
am: /^上午/i,
pm: /^下午/i,
am: /^上午?/i,
pm: /^下午?/i,
midnight: /^午夜/i,
noon: /^[中正]午/i,
morning: /^早上/i,
afternoon: /^下午/i,
evening: /^/i,
evening: /^晚上?/i,
night: /^凌晨/i
}
}
Expand Down
1 change: 1 addition & 0 deletions src/locale/zh-CN/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import match from './_lib/match/index.js'
* @author Song Shuoyun [@fnlctrl]{@link https://github.com/fnlctrl}
* @author sabrinaM [@sabrinamiao]{@link https://github.com/sabrinamiao}
* @author Carney Wu [@cubicwork]{@link https://github.com/cubicwork}
* @author Terrence Lam [@skyuplam]{@link https://github.com/skyuplam}
*/
var locale = {
code: 'zh-CN',
Expand Down
Loading

0 comments on commit c531935

Please sign in to comment.