我正在使用Yahoo UI中的日历,如下所示:
calDate =(calDate.getMonth()+ 1)+ '/'+ calDate.getDate()+'/'+ calDate.getFullYear();
这会显示MMDDYYYY
格式。
我想将此格式更改为YYYY-MM-DD
,以便我可以将其插入MySQL数据库。
我将代码更改为:
calDate = calDate.getFullYear()+' - ' +(calDate.getMonth()+ 1)+' - '+ calDate.getDate();
虽然有效,但现在的问题是,当我想更改所选日期时,日历不显示日期,而是显示NAN
。
答案 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, getMonth
和getDate
答案 1 :(得分:3)
bluesmoon还在YUIBlog上撰写了两篇关于日期格式化的优秀文章:
答案 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);