【问题标题】:Bootstrap DateTimePicker format引导日期时间选择器格式
【发布时间】:2015-03-16 08:52:38
【问题描述】:

我正在编写一个 MVC 5 互联网应用程序并在视图中使用 bootstrap-datetimepicker

我的应用程序正在国际上使用,我想格式化 datetimepicker 以使每个用户都有正确的格式。我有每个用户的文化和时区,如何将 datetimepicker 格式化为正确的用户格式?我应该使用格式属性、语言环境还是其他技术?

我目前正在从 Culture 对象中获取 DateTimeFormat 对象。这具有以下值:

ShortDatePattern

ShortTimePattern

然后我尝试将 datetimepicker 设置如下:

$(function () {
    $('#displayMapLocationStartDate').datetimepicker(
    {
        format: '**combination of culture object**',
    });
});

这是为每个不同用户的文化编写正确格式的 datetimepicker 代码的最佳方式吗?如果没有,应该怎么做?

提前致谢。

【问题讨论】:

  • 我不明白你的问题。您引用了 .NET Culture 对象,但随后在 JavaScript 中显示了硬编码值?
  • 你能看看我的编辑吗?

标签: c# asp.net-mvc-5 format cultureinfo bootstrap-datetimepicker


【解决方案1】:

Bootstrap datetimepicker 内部使用 Moment.js 进行格式化,Moment 的格式化代码与 .NET 的不同。例如,.NET 使用 dd 表示带有前导数字 (01...31) 的月份,但 Moment 使用 DD 表示同样的事情。因此,您在上面发布的代码将无法按预期工作。

您将需要编写一个转换方法,该方法接受 .NET 日期/时间格式字符串并输出与 Moment 兼容的版本,然后您可以在设置 datetimepicker.format 属性时使用它。

【讨论】:

  • format: 'DD/MM/YYYY', 的格式为我带来了我期望的日期格式 30/11/2021
【解决方案2】:

如果您查看the Momentjs docs,您会发现它们提供了区域设置感知格式标记L(日期)和LT(时间)。

这两个标记都是选择器format 设置接受的字符串。

只要您将moment-with-locales.jsmoment.js 包含在正确的语言环境文件中,您就可以使用任何一个令牌来做您想做的事。

$('#displayMapLocationStartDate').datetimepicker(
{
    format: 'L',
});

【讨论】:

  • 感谢随机否决的选民没有给出解释。
  • 不是我投反对票,但我没有让上述内容与更改语言环境一起工作。尝试在 HTML 中设置 data-date-format='L' 并尝试您的 js 调用。两者最终都导致了我的标准美国 M/D/Y 格式。如果我使用“DD/MM/YYYY”,那么一切都很好。我会猜到 L 和 LT 会起作用,但我只是没有看到它,所以最终会像上面的答案一样编写翻译。感谢伟大的图书馆!
猜你喜欢
  • 1970-01-01
  • 2017-03-24
  • 1970-01-01
  • 2013-11-28
  • 2017-02-23
  • 1970-01-01
  • 2013-05-09
  • 1970-01-01
  • 2017-08-29
相关资源
最近更新 更多