[TIMOB-27890] Android: Add Intl.DateTimeFormat support
GitHub Issue | n/a |
---|---|
Type | New Feature |
Priority | Medium |
Status | Closed |
Resolution | Fixed |
Resolution Date | 2020-07-19T14:16:34.000+0000 |
Affected Version/s | n/a |
Fix Version/s | Release 9.1.0 |
Components | Android |
Labels | DateTimeFormat, Intl, android, format, locale, localization, parity |
Reporter | Joshua Quick |
Assignee | Joshua Quick |
Created | 2020-05-08T18:35:37.000+0000 |
Updated | 2020-07-30T13:04:49.000+0000 |
Description
*Summary:*
On Android, we should add support for JavaScript class
Intl.DateTimeFormat
.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat
This is already supported on iOS. We should add it to Android for parity.
*Note:*
To add official Intl
support to V8, we would have to #if
it in, but this involves adding the ICU (International Components for Unicode) C++ library which is about 20 MB per architecture. This is too big and is not mobile friendly. Especially since Google Play has a 100 MB limit on APKs. So, the most reasonable solution is to implement this ourselves in Java.
*Alternatives:*
On older Titanium versions, your only option to generate localized date/time strings was via APIs:
* [String.formatDate()](https://docs.appcelerator.com/platform/latest/#!/api/Global.String-method-formatDate)
* [String.formatTime()](https://docs.appcelerator.com/platform/latest/#!/api/Global.String-method-formatTime)
PR (master): https://github.com/appcelerator/titanium_mobile/pull/11698
manually rebase/merged to master, 9_1_X, 9_3_X
There's a bug with
formatToParts()
on Android 4.4. Fixed via PRs... PR (master): https://github.com/appcelerator/titanium_mobile/pull/11830 PR (9.1.x): https://github.com/appcelerator/titanium_mobile/pull/11831Fix has been merged to master, 9_1_X and 9_3_X.
*Closing ticket*. Fix verified in SDK version
9.1.0.v20200724110711
,9.2.0.v20200724112452
and9.3.0.v20200724114100
. Test and other information can be found at: https://github.com/appcelerator/titanium_mobile/pull/11698 PR (master): https://github.com/appcelerator/titanium_mobile/pull/11830 PR (9.1.x): https://github.com/appcelerator/titanium_mobile/pull/11831 *Test Environment*