【问题标题】:Storing Javascript Date in SQLite with ExtJS使用 ExtJS 在 SQLite 中存储 Javascript 日期
【发布时间】:2012-05-12 00:53:04
【问题描述】:

我正在用 ExtJS 编写一个应用程序,它使用 WebSQL 在浏览器的 SQLite 数据库中存储数据。 (这些要求仅适用于 web-kit 浏览器,我很幸运吧?)我遇到了日期字段的问题。

我在处理 Javascript 日期的 UI 中使用 ExtJS 的 datefields。我的 SQLite 架构使用 datetime 字段来存储它们。 SQLite 在我保存数据时抱怨违反了约束,但数据仍然在那里,所以我并不关心。

问题是我需要在 SQLite 中进行一些日期比较才能填充 ExtJS 网格。但是因为日期格式是 Javascript 数据格式,而不是 SQLite 可接受的datetime 格式之一,所以我在 sql 中进行比较是行不通的。

我的 sql 无法比较日期,因为它不是 SQLite 期望的格式。我该如何解决?

我在保存数据时尝试使用 Ext.Data.format() 将其置于 SQLite 喜欢的格式 ("Y-m-d") 但无济于事。我还研究过使用 Date() 函数在我的 sql 中将 Javascript 日期格式转换为 SQLite 日期时间格式,但这也没有用。

有什么想法吗?

【问题讨论】:

  • this 指定 SQLite 的日期时间格式。您可以在代码中进行一些调试以打印出准确发送到 SQLite 的字符串吗?
  • 就像我说的,我使用的是 Javascript date 对象,所以格式是:Fri May 11 2012 20:32:54 GMT-0600 (MDT)

标签: javascript sql sqlite extjs


【解决方案1】:

这个也不行?

Ext.create ('Ext.container.Container', {
    renderTo: Ext.getBody () ,
    items: [{
        xtype: 'datefield' ,
        fieldLabel: 'date' ,
        format: "Y-m-d"
    } , {
        xtype: 'button' ,
        text: 'Push me' ,
        listeners: {
            click: function (button) {
                console.log (button.previousSibling('datefield').getRawValue());
            }
        }
    }]
});

它打印“2012-05-12”。 如果你使用 getValue() 你错了,因为(来自 ExtJS Doc):

返回字段的当前数据值。返回值的类型特定于特定字段的类型(例如 Ext.form.field.Date 的 Date 对象),这是 对字段的已处理字符串值调用 rawToValue 的结果。要返回原始字符串值,请参阅 getRawValue。

希望对你有所帮助:D

【讨论】:

  • 啊,是的,这就是问题所在。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-25
  • 1970-01-01
相关资源
最近更新 更多