0

我正在为显示所选日期之间的天数而苦苦挣扎:<input type="date" id="date" />和今天。

基于此,我想展示一个特定的<div>. 例如,如果从输入值的日期到我们显示的日期之间有 20 天<div id="20day"></div>,如果有超过 20 天,我们将显示<div id="21day"></div>

仅使用 jQuery 就可以吗?


用于std::vector避免必须通过原始指针、new[]和手动管理内存delete[]。这样做(正如您所经历的那样)容易出错,并且很容易导致内存泄漏或未定义的行为。

DbRecord出于同样的原因,我还建议使用智能指针而不是原始指针来保存对对象的引用。您应该根据所需的所有权策略选择您的智能指针。在这里,我会假设std::shared_ptr是合适的。

但是请注意,如果您不需要引用语义,那么您根本不应该使用指针,而是将您的容器声明为std::vector<DbRecord>。在这里,我假设您确实需要引用语义,因为您的原始版本使用(原始)指针;但同样,如果你不这样做,不要使用指针。

因此,鉴于必要的#include指令和using声明:

#include <string>
#include <vector>
#include <memory>

using std::string;
using std::vector;
using std::shared_ptr;

DbRecord以及数据结构的(未更改的)定义:

struct DbRecord {
    string oName;
    string oAddr;
    string cName;
    string cAddr;
};

您可以更改CCompanyIndexthis 的定义(如您所见,用户定义的默认构造函数和析构函数现在是多余的,您可以让编译器隐式生成它们):

class CCompanyIndex {
public:

//  No more need for a user-defined default constructor and destructor!

    bool Add(const string & oName,
            const string & oAddr,
            const string & cName,
            const string & cAddr);
    bool Del(const string & oName,
            const string & oAddr);
    bool Search(const string & oName,
            const string & oAddr,
            string & cName,
            string & cAddr) const;

    std::vector<std::shared_ptr<DbRecord>> db;
//  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
};

最后,请注意您不需要执行任何手动清理:

int main(int argc, char const *argv[])
{
    CCompanyIndex c1;
    // do something..with c1, i.e. add there some records to array
    // ...
    // ...

    // NO NEED TO MANUALLY DELETE IT NOW!
}
4

2 回答 2

2

尝试这个:

$('#date').change(function () {
    var date1 = new Date($(this).val());
    var date2 = new Date();
    var diffDays = date2.getDate() - date1.getDate();
    $('body').append('<div id="' + diffDays + '"></div>');
});

在这里演示

于 2013-03-31T13:39:07.387 回答
0
var selected = $('#date').val();
var today = new Date();

var diff = new Date(selected - today);

// get days
var days = diff/1000/60/60/24;

alert(days);

var dayswill 包含天数。你可以继续对变量做任何你喜欢的事情。我这里刚用过alert()

于 2013-03-31T13:33:12.393 回答