以下の場合、日付比較が正しく動作しません。2つの日付のセットを比較しています。最初のものは完全に正常に動作しますが、2 番目のペアの比較に問題があります。
function doGet(e){
var app = UiApp.createApplication();
var grid = app.createGrid(4, 3).setStyleAttributes({'margin':'20'});
grid.setWidget(0, 0, app.createLabel('User ID:'));
grid.setWidget(0, 1, app.createTextBox().setName('idBox').setId('idBox'));
grid.setWidget(1, 0, app.createLabel('From Date:'));
grid.setWidget(1, 1, app.createTextBox().setName('sDate').setId('sDate'));
grid.setWidget(2, 0, app.createLabel('To Date:'));
grid.setWidget(2, 1, app.createTextBox().setName('eDate').setId('eDate'));
createDatePicker(app);//date picker function works perfectly fine(used for selecting dates from calendar)
var dhandler = app.createServerHandler('pickDate');
app.getElementById('sDate').addClickHandler(dhandler);
app.getElementById('eDate').addClickHandler(dhandler);
var panel = app.createVerticalPanel().setId('settingsPanel');
panel.add(app.createLabel('Enter UserID:');
panel.add(grid);
var button = app.createButton('Search').setId('search');
var handler = app.createServerClickHandler('_searchUser');
handler.addCallbackElement(grid);
button.addClickHandler(handler);
grid.setWidget(3, 1, button);
app.add(panel);
return app;
}
function _searchUser(e){
var app = UiApp.getActiveApplication();
var id = e.parameter.idBox;
var sdt = Utilities.formatDate(new Date(e.parameter.sDate), "PST", 'M/d/YYYY').toString();
var edt = Utilities.formatDate(new Date(e.parameter.eDate), "PST", 'M/d/YYYY').toString();
app.add(app.createLabel("ID entered: "+id));
app.add(app.createLabel("Start Date: "+sdt));
app.add(app.createLabel("End Date: "+edt));
var tsdt = Utilities.formatDate(new Date("6/1/2014"), "PST", "M/d/YYYY");//just for example
var tedt = Utilities.formatDate(new Date("6/3/2014"), "PST", "M/d/YYYY");//just for example
app.add(app.createLabel("Sample Start Date compared to: "+tsdt));
app.add(app.createLabel("Sample End Date Compared to: "+tedt));
if(sdt == tsdt){app.add(app.createLabel("Start Date: EQUAL "))}
if(sdt > tsdt){app.add(app.createLabel("Start Date: Greater "))}
if(sdt < tsdt){app.add(app.createLabel("Start Date: Smaller "))}
if(edt == tedt){app.add(app.createLabel("End Date : EQUAL "))}
if(edt > tedt){app.add(app.createLabel("End Date: Greater "))}
if(edt < tedt){app.add(app.createLabel("End Date: Smaller "))}
return app;
}
上記のコードの開始日は完全に比較され、すべてのケース、つまり EQUAL to、Greater than、Smaller than で機能します。しかし、終了日 (edt および tedt) は、サンプル日付 (2014 年 6 月 3 日) から 1 週間を超える日付の値に対して正しい結果を返しません。つまり、2014 年 6 月 10 日または月末までの日付が入力された場合、結果として Smaller が返されますが、そうではありません。
誰でもこれで私を助けてくれますか