当前位置: 首页 > 知识库问答 >
问题:

如何将用户输入格式化为正确的本地化格式?

缪修德
2023-03-14

我有一个

我想得到用户输入的任何值,通过一个本地化的时刻,然后用正确的格式更新输入。

我正试图遵循这些准则,以利用当地时间

// I want to use a local instance of moment
let localLocale = moment();

// I want to set the locale to be 'fr'
localLocale.locale('fr')

// I want to set the format to be 'LL'
localLocale.format('LL')

// this is what the user typed in
let userInput = '2/3/1986'

// I want to do:
let formattedUserInput = something(userInput)

formattedUserInput的值必须是Mars 2,1986

我在寻找什么东西应该是。目前文档是如此混乱,没有解释如何做到这一点。

如果userInput显然是乱七八糟的,那么something()应该返回null或抛出错误或其他我不介意的内容。

我尝试localLocale(userInput),但它抛出一个localLocale不是一个函数


共有2个答案

景阳曜
2023-03-14

区域设置集是您定义的实例的本地设置。所以

let localLocale = moment();
localLocale.locale('fr');

localLocale的本地设置为'fr'。因此,如果您想在本地执行此输入,您可以使用:

// this is what the user typed in
let userInput = '2/3/1986';

// Use a local instance of moment, using the user's input
let localLocale = moment(userInput, 'D/M/YYYY');

// Set the locale to be 'fr'
localLocale.locale('fr');

// Get the formatted string
let formattedUserInput = localLocale.format('LL');

console.log(formattedUserInput);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment-with-locales.min.js" integrity="sha256-VrmtNHAdGzjNsUNtWYG55xxE9xDTz4gF63x/prKXKH0=" crossorigin="anonymous"></script>
陆昊
2023-03-14

您可以使用矩(String,String[])解析difefrent格式的输入:

如果您不知道输入字符串的确切格式,但知道它可能是多种格式之一,则可以使用一组格式。

可以使用矩。ISO_8601,如这里所示,像矩(String)一样解析ISO 8601输入。

请注意时刻(String,String[])

从2.3版开始。0时,矩使用一些简单的试探法来确定使用哪种格式。整齐:

  • 与无效日期相比,更喜欢产生有效日期的格式

一种可能的解决方案如下:

function something(userInput){
  let m = moment(userInput, [moment.ISO_8601, 'DD/MM/YYYY', 'MM/DD/YYYY' ]);
  if( !m.isValid() ){
    // throw "Invalid input";
  }
  return m.locale('fr').format('LL');
}

['2/3/1986', 'aaa', '10-15-2017'].forEach((userInput) => {
  console.log( something(userInput) );
});
html lang-html prettyprint-override"><script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/locale/fr.js"></script>
 类似资料:
  • 我试图在调用LocalTime时使用getter在中获取它。目前的情况是: 我想让它返回中的时间,因为现在它是。我想弄乱日期时间格式化程序,但我搞不清楚。这是我的:

  • 概览 Django的格式化系统可以在模板中使用当前地区特定的格式,来展示日期、时间和数字。也可以处理表单中输入的本地化。 当它被开启时,访问相同内容的两个用户可能会看到以不同方式格式化的日期、时间和数字,这取决于它们的当前地区的格式。 格式化系统默认是禁用的。需要在你的设置文件中设置USE_L10N = True来启用它。 注意 为了方便起见,django-admin startproject创建

  • 我们可以看到格式化就是通过格式字符串得到特定格式: format!("{}", foo) -> "3735928559" format!("0x{:X}", foo) -> "0xDEADBEEF" format!("0o{:o}", foo) -> "0o33653337357" 根据使用的参数类型,同样的变量(foo)能够格式化成不同的形式:X, o 和未指定形式。 这个格式化的功能是通过 t

  • JSON MyJSONObject: myJSONObject(console.log(data))的字符串:

  • 这个程序的输出与预期的一样,它给出2014-12-01 17:30:15。 但是当我在iFormat中将hh替换为hh(与outputformat相同)时,它给出的输出为12Out格式2014-12-01 05:30:15 如果我将两者都转换为小写,也会发生同样的情况。为什么会出现这种类型的不一致?

  • 本文向大家介绍如何将Java LocalDateTime格式化为ISO_DATE_TIME格式,包括了如何将Java LocalDateTime格式化为ISO_DATE_TIME格式的使用技巧和注意事项,需要的朋友参考一下 首先,设置日期: 现在,将日期时间格式化为ISO_DATE_TIME格式: 示例 输出结果