【问题标题】:Javascript: Date IssueJavascript:日期问题
【发布时间】:2010-08-15 16:45:49
【问题描述】:

我在 javascript 中创建了一个新的 Date 并为其提供日期的字符串值,如下所示:

>>> string_date = '2009-09-09';
>>> var myDate = new Date(string_date);
>>> myDate
Tue Sep 08 2009 20:00:00 GMT-0400 (EST) { locale="en"}

字符串日期来自日历选择器小部件,我将该小部件中的值写入隐藏的输入字段。日期格式为 YYYY-MM-DD。此外,使用上面的代码,我将选择的日期写入 div 以很好地显示日期。但是,用户对以这种方式显示的日期感到困惑。那么,如何以不考虑语言环境的方式显示日期,因此将其写为 2009 年 9 月 9 日?

谢谢! :)

【问题讨论】:

  • 没有人评论您的字符串从 9 月 9 日开始,但是当您打印出来时,您会得到 9 月 8 日。
  • 我知道。但是我采取了接受的答案的处理方式。我没有创建日期对象,而是从日期选择器中解析字符串,然后从中创建一个可以显示给用户的新字符串。

标签: javascript datetime


【解决方案1】:

这样的?

<script type="text/javascript">
<!--

var m_names = new Array("January", "February", "March", 
"April", "May", "June", "July", "August", "September", 
"October", "November", "December");

var d = new Date();
var curr_date = d.getDate();
var curr_month = d.getMonth();
var curr_year = d.getFullYear();

document.write(m_names[curr_month] + " " + curr_date + ", " + curr_year);

//-->
</script>

更多:http://www.webdevelopersnotes.com/tips/html/javascript_date_and_time.php3

【讨论】:

  • 谢谢。我做了一些修改以满足我的需要。 :)
  • 没问题...它实际上同时为我解决了一个问题。尽管这些示例都不是我所需要的,但这足以让我们朝着正确的方向前进。
【解决方案2】:

myDate.toDateString()

如果你不想要这一天,(1 + myDate.getMonth()) + ' ' + myDate.getDate() + ', ' + myDate.getFullYear()

如果你不需要那个逗号,你可以写成[1 + myDate.getMonth(), myDate.getDate(), myDate.getFullYear()].join(' ')

编辑:忘记了 getMonth() 不会返回人类可读的名称,并且您必须按照 @NinjaCat 将它们存储在数组中。

【讨论】:

  • 您几乎肯定会想使用myDate.getMonth() + 1,因为 Javascript 日期从零开始计算几个月,这与世界上的人类不同。
  • @Pointy @mplungjan ,是的,我在发布后不久就记得了,并进行了编辑以反映。我讨厌 getMonth() 是 0 索引,而 getDate() 不是这样,这么多。不幸的是,您必须使用外部数组来表示人类可读的月份名称。
【解决方案3】:
var parts = myDate.split(' ');
var strDate = parts[1] + ' ' + parts[2] + ', ' + part[3]

如果您采用“正确”方式并使用 getXXX,请记住 getMonth() 需要 +1,因为 JS 月份从 0 开始。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-03
    • 2015-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多