区域设置特定日期没有年份

时间:2014-09-30 09:00:02

标签: javascript datejs

由于语言环境支持,我使用https://github.com/abritinthebay/datejs/进行日期格式设置。但是,如果没有年份,是否无法获得完整的约会时间?

示例

输入日期:2014/09/20 20:00:00

输出日期:09/20 20:00

它必须尊重区域设置!

3 个答案:

答案 0 :(得分:0)

console.log(new Date().toLocaleString('en-En',{weekday: "long", month: "long", day: "numeric"}))

您可以根据需要更改此选项。

答案 1 :(得分:0)

从ES2015开始,您可以跳过第一个参数并仅设置'options'参数,这样将应用语言环境:

new Date().toLocaleString(undefined, {
    month: "short", day: "numeric", 
    hour: "numeric", minute: "numeric", second: "numeric"
}) // "Jul 11, 5:50:09 PM"

我没有找到删除日期和时间之间逗号的方法。在这种情况下,可以使用字符串格式:

const dateTime = new Date();
const datePart = `${dateTime.toLocaleDateString(undefined, {month: "short", day: "numeric"})}`;
const timePart = `${dateTime.toLocaleTimeString()}`;
const result = `${datePart} ${timePart}`;
// "Jul 11 5:57:10 PM"

答案 2 :(得分:-1)

要使用Date.js将日期格式化为月/日小时:分钟,您可以使用格式' MM / DD HH:mm'来调用 toString 得到所有值的两位数,例如:



console.log(new Date().toString('MM/dd HH:mm'));

<script src="https://cdnjs.cloudflare.com/ajax/libs/datejs/1.0/date.min.js"></script>
&#13;
&#13;
&#13;

尝试确定用户期望看到的格式是非常有问题的,无论它是否被称为&#34; culture&#34;,&#34; locale&#34;或只是&#34;偏好&#34;。 Javascript无法访问系统设置,浏览器也无法显示它们。您可以尝试根据 Date.prototype.toLocaleString 的输出进行猜测,但这完全取决于实现,并且不一定符合用户首选项。

一种常见的方法是使用明确的格式,因此用户偏好并不重要,例如

&#13;
&#13;
console.log(new Date().toString('dd-MMM HH:mm'));
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/datejs/1.0/date.min.js"></script>
&#13;
&#13;
&#13;

另一种方法是使用明确的默认格式,然后允许用户从一些支持的格式中进行选择并存储首选项。

还有内置的Date.prototype.toLocaleString,这是非常不可靠的,但有些浏览器支持可选的ECMA-402 Intl formatting options。它作为一个格式化程序非常普通,所以如果有更好的工作库可以推荐它,例如。

&#13;
&#13;
var options = {
  month: 'short',
  day  : '2-digit',
  hour : '2-digit',
  minute:'2-digit'
};

// Browser dependent, something like en-us: Jan 21, 8:39 AM
console.log('en-us: ' + new Date().toLocaleString('en-us',options))

// Browser dependent, something like en-gb: 21 Jan, 08:39
console.log('en-gb: ' + new Date().toLocaleString('en-gb',options))
&#13;
&#13;
&#13;

另一种方法是编写自己的解析器和格式化程序,它可以满足您的需求。如果您只需要支持一种或两种格式,那就非常简单,例如

&#13;
&#13;
// input format yyyy/mm/dd hh:mm:ss
function parseDateString(ds) {
  var d = ds.split(/\D+/);
  return new Date(d[0], --d[1], d[2], d[3], d[4], d[5]);
}

// Return date string as mm/dd hh:mm
function formatDate(d) {
  function z(n) {
    return (n < 10 ? '0' : '') + n
  }
  return z(d.getMonth() + 1) + '/' + z(d.getDate()) +
    ' ' + z(d.getHours()) + ':' + z(d.getMinutes());
}

console.log(formatDate(parseDateString('2014/09/20 20:00:00'))); // 09/20 20:00
&#13;
&#13;
&#13;

因此,您可以使用少于十几行代码替换整个库。 : - )