Javascript:日期问题

Javascript:日期问题,javascript,datetime,Javascript,Datetime,我用javascript创建了一个新的日期,并向其提供如下日期的字符串值: >>> string_date = '2009-09-09'; >>> var myDate = new Date(string_date); >>> myDate Tue Sep 08 2009 20:00:00 GMT-0400 (EST) { locale="en"} 字符串日期来自日历选择器小部件,我将该小部件中的值写入一个隐藏的输入字段。日期的格式是YYY

我用javascript创建了一个新的日期,并向其提供如下日期的字符串值:

>>> 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日

谢谢!:)

myDate.toDateString()

如果您不想要这一天,
(1+myDate.getMonth())+“+myDate.getDate()+”,“+myDate.getFullYear()

如果不需要逗号,可以将其写成
[1+myDate.getMonth(),myDate.getDate(),myDate.getFullYear()]。join(“”)

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

myDate.toDateString()

var parts = myDate.split(' ');
var strDate = parts[1] + ' ' + parts[2] + ', ' + part[3]
如果您不想要这一天,
(1+myDate.getMonth())+“+myDate.getDate()+”,“+myDate.getFullYear()

如果不需要逗号,可以将其写成
[1+myDate.getMonth(),myDate.getDate(),myDate.getFullYear()]。join(“”)

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

var parts = myDate.split(' ');
var strDate = parts[1] + ' ' + parts[2] + ', ' + part[3]
如果您选择“正确”的方式并使用
getXXX
请记住
getMonth()
需要+1,因为JS月从0开始

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

类似的情况

<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>

更多信息:

像这样的东西

<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>


更多信息:

您几乎肯定会想使用
myDate.getMonth()+1
,因为Javascript日期从零开始计算月数,这与世界上的人类不同。@Pointy@mplungjan,是的,我在发布并编辑后不久就想起了这一点。我讨厌getMonth()是0索引的,而getDate()不是这么多。不幸的是,您必须使用外部数组来表示人类可读的月份名称。您几乎肯定要使用
myDate.getMonth()+1
,因为Javascript日期从零开始计算月份,这与世界上的人类不同。@Pointy@mplungjan,是的,我在发布后不久就记住了这一点,并进行了编辑以反映。我讨厌getMonth()是0索引的,而getDate()不是这么多。不幸的是,您必须使用外部数组来表示人类可读的月份名称。没有人评论您的字符串以9月9日开始,但当您打印出来时,您会得到9月8日。我知道。但对我来说,我采取了接受答案的方式来处理这个问题。我没有创建日期对象,而是解析日期选择器中的字符串,然后从中创建一个新的字符串,可以显示给用户。没有人评论您的字符串从09年9月开始,但当您打印出来时,您会得到08年9月。我知道。但对我来说,我采取了接受答案的方式来处理这个问题。我没有创建日期对象,而是从日期选择器解析字符串,然后从中创建一个新字符串,可以显示给用户。谢谢。我做了一些修改以适应我的需要。:)没问题。。。它实际上同时为我解决了一个问题。虽然这些例子都不是我所需要的,但足以让我们朝着正确的方向前进。谢谢。我做了一些修改以适应我的需要。:)没问题。。。它实际上同时为我解决了一个问题。虽然没有一个例子正是我需要的,但它足以让我们朝着正确的方向前进。