1

我正在使用 MySQL,它以 'yyyy-mm-dd' 格式存储日期。

我有一个布局,其中一个部分显示一个网格。此网格中的记录显示首次创建记录的日期。我需要日期格式为“mm/dd/yyyy”。

这是网格中日期字段的设置方式:

{ field: 'incident_date', caption: 'Incident Date', size: '150px', searchable: true, type: 'date', format: 'mm/dd/yyyy' },

我还有一个表单可供用户编辑记录。这是该表格上的日期字段代码:

{ name: 'incident_date', type: 'date', format: 'mm/dd/yyyy', required: true },

在 w2ui-1.4.2.min.js 我有这些设置:

"date_format"       : "mm/dd/yyyy",
"date_display"      : "mm/dd/yyyy",

在表单上,​​日期字段有一个弹出日历,当该字段被选中时会出现。当您在日历中选择一个日期时,该字段将填写您选择的日期,格式为“mm/dd/yyyy”。

现在您已经了解了如何设置,当您保存记录时,您输入的任何日期都会在网格中显示为“0000-00-00”。如果您使用 phpMyAdmin 查看表中的实际数据,则存储的日期为“0000-00-00”

我想要的是将日期显示在网格中,并以“mm/dd/yyyy”的格式显示。我怎样才能做到这一点?

谢谢, TD

4

1 回答 1

0

对于可能遇到相同问题的任何人,解决此问题的最简单方法是以 mm-dd-yyyy 格式从服务器返回您的日期。例如,如果使用 MySQL,您可以在 SQL SELECT 语句中使用以下函数 date_format(yourDate, '%m-%d-%Y')。

另一个修复是修改 w2ui.js。我认为 w2ui 版本中的日期格式。1.5 不能正常工作。问题在于日期的 w2utils.formatters。它使用与格式化日期相同的日期格式来检查它是否是有效日期。因此,如果将 yyyy-mm-dd 传递给参数,它会使用它来查看它是否是有效日期并失败。我做了一些对我有用的更改,并在下面列出。

// MODIFIED LOCALE TO USE yyyy-mm-dd DATE FORMAT
var w2utils = (function ($) {
var tmp = {}; // for some temp variables
var obj = {
    version  : '1.5.RC1',
    settings : {
        "locale"            : "en-us",
        //"dateFormat"        : "m/d/yyyy",
        "dateFormat"        : "yyyy-mm-dd",
        "timeFormat"        : "hh:mi pm",
        "datetimeFormat"    : "m/d/yyyy|hh:mi pm",
        //"datetimeFormat"    : "yyyy-mm-dd|hh:mi pm",

// MODIFIED DATE FORMATTER.  ALWAYS RETRIEVE DEFAULT DATEFORMAT AND USE WHEN CHECKING FOR VALID DATE.  
w2utils.formatters = {
'date': function (value, params) {
    if (params === '') params = w2utils.settings.dateFormat;  // DELETED
    var defaultFormat = w2utils.settings.dateFormat;  //ADDED 
    if (value == null || value === 0 || value === '') return '';
    //var dt = w2utils.isDateTime(value, params, true);
    //if (dt === false) dt = w2utils.isDate(value, params, true);
    var dt = w2utils.isDateTime(value, defaultFormat, true);  // CHANGED
    if (dt === false) dt = w2utils.isDate(value, defaultFormat, true); // CHANGED
    return '<span title="'+ dt +'">' + w2utils.formatDate(dt, params) + '</span>';
},

希望这可以帮助某人。我正在努力将这些更改添加到存储库中。

谢谢约翰

于 2017-12-03T15:59:16.667 回答