【问题标题】:Alternative to toLocaleString() for chrome browserchrome 浏览器的 toLocaleString() 替代方案
【发布时间】:2013-10-15 10:47:54
【问题描述】:
 function tolocal(str)
 {
 var date, split, dSplit, tSplit, d, raw;
date = '';
split = str.split(' ');
if (split.length === 2) {
    dSplit = split[0].split('-');
    tSplit = split[1].split(':');
}
raw = d.toLocaleString().split(' GMT')[0];

 return raw.substring(raw.indexOf(", ")+2, raw.lastIndexOf(':')) + " " + raw.substring(raw.length-2,raw.length)
 }

上面的代码在ie浏览器中运行良好,我得到以下格式的输出。

2012 年 11 月 13 日上午 10:15

但我无法在 chrome 浏览器中实现相同的功能。还有其他功能可以帮助我实现相同的输出吗? date.toUTCString() 提供了相同的结果,但我不确定它与 toLocaleString() 在功能方面有何不同。

提前致谢。

【问题讨论】:

  • 它们完全不同。你需要什么,martes, 15 de octubre de 2013 12:53:46Tue, 15 Oct 2013 10:53:46 GMT
  • 我需要它在 2013 年 10 月 15 日上午 10:53 作为最终输出。我可以做一些字符串操作来实现这一点。但是 chrome 中的 toLocaleString() 给了我 15/10/2013 10:53:00 AM
  • 因此您根本不需要语言环境功能(无论是语言还是时区):您想要转换为 UTC 并以自定义格式以英文显示。抱歉,我对 toLocaleString() 的替代方法感到困惑。
  • 所以您希望它以给定的自定义格式表示为 UTC 时间? Month DD, YYYY HH:MM AM
  • 我想要Month DD, YYYY HH:MM AM格式

标签: javascript jquery datetime


【解决方案1】:

只需手动操作:

// Where "date" is a Date object
function dateFormatUTC(date) {
  var months = [
    'January', 'February', 'March', 'April', 'May', 'June',
    'July', 'August', 'September', 'October', 'November', 'December'
  ];

  var hours = date.getUTCHours();
  if (hours < 10) hours = '0' + hours;

  var minutes = date.getUTCMinutes();
  if (hours < 10) hours = '0' + hours;

  var monthName = months[date.getUTCMonth()];
  var timeOfDay = hours < 12 ? 'AM' : 'PM';

  return monthName + ' ' + date.getUTCDate() + ', ' +
         date.getUTCFullYear() + ' ' + hours + ':' + minutes + timeOfDay;
}

【讨论】:

    【解决方案2】:

    也许你可以使用第三方库来做这样的事情:moment.js 是一个很好的。 示例:

    moment(d).format('MMMM Do, YYYY h:mms a');
    

    【讨论】:

    • 不使用第三方库有没有其他办法?
    • 当然,也许@user2857484 提供了有用的答案?
    • 这将是您最简单和最好的选择。任何直接来自 Date 类的字符串输入/输出都将是高度实现特定的。
    【解决方案3】:

    您可以尝试使用以下选项:

      var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
              // request a weekday along with a long date
       var options = {weekday: "long", year: "numeric", month: "long", day: "numeric"};
         // an application may want to use UTC and make that visible
        options.timeZone = "UTC";
        options.timeZoneName = "short";
        alert(date.toLocaleString("en-US", options));
    

    请找参考@

    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-20
    • 1970-01-01
    相关资源
    最近更新 更多