在Yahoo UI中更改日期的格式

时间:2009-03-08 17:37:56

标签: javascript yui

我正在使用Yahoo UI中的日历,如下所示:

  

calDate =(calDate.getMonth()+ 1)+   '/'+ calDate.getDate()+'/'+   calDate.getFullYear();

这会显示MMDDYYYY格式。

我想将此格式更改为YYYY-MM-DD,以便我可以将其插入MySQL数据库。 我将代码更改为:

  

calDate = calDate.getFullYear()+' - '   +(calDate.getMonth()+ 1)+' - '+ calDate.getDate();

虽然有效,但现在的问题是,当我想更改所选日期时,日历不显示日期,而是显示NAN

4 个答案:

答案 0 :(得分:4)

通常最好将日期作为unix时间戳传递给后端,并将其转换为数据库本身。在为服务器构造POST数据的代码中,您将传递以下内容:

var t = calDate.getTime()/1000;

请注意除以1000.这是必需的,因为javascript时间戳以毫秒为单位,而MySQL需要秒。

在您的SQL语句中,您将按原样传递时间戳,并使用FROM_UNIXTIME函数将其转换为您所需的格式:

INSERT INTO ... VALUES ( FROM_UNIXTIME($t), ...)

当然会有一些代码介于后端脚本中将t从javascript转换为$t,然后将其传递给SQL。

现在,如果您确实需要在前端格式化日期,则可以使用方便的YAHOO.util.Date实用程序。做这样的事情:

alert(YAHOO.util.Date.format(calDate, {format: "%Y-%m-%d" }));

比调用getFullYear, getMonthgetDate

容易得多

答案 1 :(得分:3)

bluesmoon还在YUIBlog上撰写了两篇关于日期格式化的优秀文章:

  1. http://yuiblog.com/blog/2009/02/11/date-formatting-pt1-2/
  2. http://yuiblog.com/blog/2009/02/25/date-formatting-pt2/
  3. -Eric

答案 2 :(得分:2)

您应该在服务器端插入之前更改日期的格式,让客户端具有所需的格式,并在以后更改日期。

答案 3 :(得分:0)

            cal1.cfg.setProperty("DATE_FIELD_DELIMITER", "-");

            cal1.cfg.setProperty("MDY_YEAR_POSITION", 1);
            cal1.cfg.setProperty("MDY_MONTH_POSITION", 2);
            cal1.cfg.setProperty("MDY_DAY_POSITION", 3);