【问题标题】:Convert java datetime symbols to javascript libaries datetime symbols将 java 日期时间符号转换为 javascript 库日期时间符号
【发布时间】:2021-11-18 11:10:17
【问题描述】:

我的后端是使用 java 构建的,用户设置 API 返回日期时间格式,以使用 Java 标准在视图中使用(日期时间稍后在 ISO8601 中返回并即时格式化)。 Java 'yyyy-MM-dd' 中的示例应转换为 'YYYY-MM-DD' 以与 javascript 的库 momentjs 一起使用。

有没有直接的方法将符号从 java 转换为 javascript 库(momentjs 或 date-fns)?

【问题讨论】:

  • 如果服务器和客户端可能位于不同的时区,并且该日期时间应显示在用户本地的时区中,那么我建议不要将其作为字符串发送,而是发送UTC 时间戳,客户端可以正常显示。
  • 这已经通过发送带有 UTC 的 ISO8601 日期时间来处理。谢谢
  • 我是否正确理解您想以某种方式自动转换格式/模式字符串?
  • “javascript 日期时间令牌”到底是什么意思? Date 对象?
  • @Hulk 是的。将docs.oracle.com/javase/8/docs/api/java/time/format/…"Patterns for Formatting and Parsing" 翻译成对应的 Javascript。

标签: javascript java datetime


【解决方案1】:

momentjs 有自己特定的格式符号,这让人困惑,而其他库(如 date-fns)则遵循 LDML 标准。我最终使用了 date-fns,因为 Java 具有相同的标准。

https://date-fns.org/v2.26.0/docs/Unicode-Tokens

https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table

【讨论】:

  • 您也可以使用JS-Joda,它是 Java 8 日期和时间 API (JSR 310) 的一个端口。我敢打赌他们使用的是相同的模式字母。
【解决方案2】:

这将是一个非常棒的手持操作。此外,您可能无法涵盖所有​​情况,但肯定是最常见的情况。以下内容应该可以帮助您入门。

function replacer(match, offset, string) {
  switch (match) {
    case 'M': return 'M';
    case 'MM': return 'MM';
    case 'MMM': return 'MMM';
    case 'MMMM': return 'MMMM';
    case 'd': return 'D';
    case 'dd': return 'DD';
    case 'D': return 'DDD';
    case 'DDD': return 'DDDD';
    case 'yy': return 'YY';
    case 'yyyy': return 'YYYY';
    default: return '(not supported)';
  }
}

var javaPattern = 'yyyy-MM-dd';
var regEx = /([a-z]+)/g;
var javaScriptPattern = javaPattern.replace(regEx, replacer);
console.log(javaScriptPattern);

请仔细阅读下面两个链接中的 Java 模式字母和 JavaScript 模式字母,并根据需要在我的代码中展开翻译。

链接

【讨论】:

  • tokeniser 必须比/([a-z]+)/ 更聪明一点,因为标记之间的分隔符不是强制性的,例如yyyyMMdd。您需要一次收集一个字符,直到模式不再与标记匹配,例如this answer 中的解析器。 :-)
  • 感谢您的回答,我想避免这样做。似乎 date-fns 等其他一些库遵循 Java 使用的 LDML 格式。 unicode.org/reports/tr35/…
猜你喜欢
  • 1970-01-01
  • 2017-07-29
  • 2015-09-17
  • 2016-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多