簡體   English   中英

具有兩種單獨的fromNow()格式的moment.js

[英]momentjs with two separate fromNow() formats

我正在嘗試獲取兩種不同類型的relativeTime

在一個文件中,我有:

moment.updateLocale('en', { relativeTime: {
  future: 'in %s',
  past: '%s ago',
  s:  'secs',
  ss: '%ss',
  m:  'a min',
  mm: '%dm',
  h:  '1h',
  hh: '%dh',
  d:  'a day',
  dd: '%dd',
  M:  'month',
  MM: '%dM',
  y:  'year',
  yy: '%dY'
}});

moment.utc(date).fromNow()

但這已全局應用到了矩的所有用途,我希望此文件之外的矩的其他用途對fromNow()使用常規的較長文本格式。

我嘗試了:

let g = moment()
g.updateLocale('en', { relativeTime: {
...

但是它給出了錯誤g.updateLocale is not a function

有誰知道如何為fromNow()日期格式獲取兩個不同的relativeTime設置?

謝謝!

誠然,這不一定是最優雅的解決方案,但是在您要使用自定義語言環境格式的一個文件中,您可以:

  1. 當前( 原始默認 )格式保存relativeTime的對象。
  2. 將語言環境的relativeTime格式全局設置為自定義格式。
  3. 執行您需要執行的所有moment日期/字符串操作。
  4. 通過將語言環境的relativeTime格式全局設置回您保存的對象,可以還原原始默認格式。

它看起來像這樣:

const CONFIG_ORIG = moment().locale("en").localeData()._relativeTime;
const CONFIG_NEW = {
  future: "in %s",
  past: "%s ago",
  s: "secs",
  ss: "%ss",
  m: "a min",
  mm: "%dm",
  h: "1h",
  hh: "%dh",
  d: "a day",
  dd: "%dd",
  M: "month",
  MM: "%dM",
  y: "year",
  yy: "%dY"
};

const DATE = new Date();

// Original format displays: "a few seconds ago"
const string1 = moment.utc(DATE).fromNow();

moment.updateLocale("en", { relativeTime: CONFIG_NEW });
// Custom format displays: "secs ago"
const string2 = moment.utc(DATE).fromNow();

moment.updateLocale("en", { relativeTime: CONFIG_ORIG });
// Restored original format displays: "a few seconds ago"
const string3 = moment.utc(DATE).fromNow();

這是一個代碼沙箱,顯示了此操作:

編輯moment.js語言環境


其他資源:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM