1

我正在使用 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

4 回答 4

4

通常最好将日期作为 unix 时间戳传递到后端,然后在数据库本身中进行转换。在为服务器构建 POST 数据的代码中,您将传递如下内容:

var t = calDate.getTime()/1000;

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

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

插入 ... 值 ( FROM_UNIXTIME($t), ...)

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

现在,如果您真的需要在前端格式化日期,您可以使用方便的YAHOO.util.Date实用程序。只需执行以下操作:

警报(YAHOO.util.Date.format(calDate,{格式:“%Y-%m-%d”}));

比打电话容易得多getFullYear, getMonth,而且getDate

于 2009-03-10T22:18:18.503 回答
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/

-埃里克

于 2009-03-10T22:29:12.627 回答
2

您应该在将日期插入服务器端之前更改其格式,让客户端拥有它想要的格式,然后再更改日期。

于 2009-03-08T19:26:20.917 回答
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);
于 2011-10-05T23:23:59.413 回答