Google apps script 日期比较Google应用程序脚本的问题

Google apps script 日期比较Google应用程序脚本的问题,google-apps-script,date-comparison,Google Apps Script,Date Comparison,在以下情况下,日期比较无法正常工作。我正在比较一组两个日期。第一对非常好,第二对比较有问题: 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.cr

在以下情况下,日期比较无法正常工作。我正在比较一组两个日期。第一对非常好,第二对比较有问题:

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;
 }
函数doGet(e){
var app=UiApp.createApplication();
var grid=app.createGrid(4,3).setStyleAttributes({'margin':'20'});
setWidget(0,0,app.createLabel('User ID:');
setWidget(0,1,app.createTextBox().setName('idBox').setId('idBox'));
setWidget(1,0,app.createLabel('From Date:');
setWidget(1,1,app.createTextBox().setName('sDate').setId('sDate'));
setWidget(2,0,app.createLabel('ToDate:');
setWidget(2,1,app.createTextBox().setName('eDate').setId('eDate'));
createDatePicker(应用程序);//日期选择器功能运行良好(用于从日历中选择日期)
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('enteruserid:');
面板。添加(网格);
var button=app.createButton('Search').setId('Search');
var handler=app.createServerClickHandler(“搜索用户”);
handler.addCallbackElement(网格);
addClickHandler(handler);
setWidget(3,1,按钮);
应用程序添加(面板);
返回应用程序;
}
功能搜索用户(e){
var app=UiApp.getActiveApplication();
var id=e.parameter.idBox;
var sdt=Utilities.formatDate(新日期(例如parameter.sDate)、“PST”、“M/d/YYYY”).toString();
var edt=Utilities.formatDate(新日期(例如parameter.eDate)、“PST”、“M/d/YYYY”).toString();
app.add(app.createLabel(“输入的ID:+ID”);
app.add(app.createLabel(“开始日期:+sdt”);
app.add(app.createLabel(“结束日期:+edt”);
var tsdt=Utilities.formatDate(新日期(“2014年1月6日”)、“PST”、“M/d/YYYY”);//仅举个例子
var tedt=Utilities.formatDate(新日期(“2014年6月3日”)、“PST”、“M/d/YYYY”);//仅举个例子
app.add(app.createLabel(“与“+tsdt”比较的样本开始日期”);
app.add(app.createLabel(“样本结束日期”与“+tedt”)比较);
if(sdt==tsdt){app.add(app.createLabel(“开始日期:等于”)}
如果(sdt>tsdt){app.add(app.createLabel(“开始日期:更大”)}
if(sdttedt){app.add(app.createLabel(“结束日期:更大”)}
如果(edt
上述代码中的开始日期比较完美,适用于所有情况,即等于、大于和小于。 但结束日期(edt和tedt)不会返回到样本日期(2014年6月3日)大于一周的日期值的正确结果。这意味着,如果输入了2014年6月10日或截至月底的任何其他日期,则返回的结果较小,这不应该是这种情况


有人能帮我解决这个问题吗?

在应用程序脚本中处理日期有时会让人困惑。你需要知道的是,首先在普通javascript中处理日期,然后使用该实用程序仅格式化日期以供查看。这里的问题是,以毫秒为单位的计算要简单得多,这就是。getTime()给你一个特定的日期,从1970年1月1日起,有很多内容可以在以后阅读

这是一个有效的示例

function _searchUser(e){

//var id = e.parameter.idBox;
var sdt = new Date('6/1/2014').getTime();
var edt = new Date('6/15/2014').getTime();


 var tsdt = new Date("6/1/2014").getTime()//just for example
 var tedt = new Date("6/3/2014").getTime()//just for example

 if(sdt == tsdt){Logger.log("Start Date: EQUAL ")}
 if(sdt > tsdt){Logger.log("Start Date: Greater ")}
 if(sdt < tsdt){Logger.log("Start Date: Smaller ")}

 if(edt == tedt){Logger.log("End Date : EQUAL ")}
 if(edt > tedt){Logger.log("End Date: Greater ")}
 if(edt < tedt){Logger.log("End Date: Smaller ")}
 }
function\u搜索用户(e){
//var id=e.parameter.idBox;
var sdt=新日期('6/1/2014')。getTime();
var edt=新日期('6/15/2014')。getTime();
var tsdt=新日期(“2014年6月1日”).getTime()//仅举个例子
var tedt=new Date(“6/3/2014”).getTime()//仅举个例子
if(sdt==tsdt){Logger.log(“开始日期:等于”)}
如果(sdt>tsdt){Logger.log(“开始日期:更大”)}
if(sdttedt){Logger.log(“结束日期:更大”)}
if(edt
非常感谢!大于和小于函数工作得非常好。但是现在equals函数在同一时间内不起作用cz我注意到它也比较了某一天的时间。有什么解决办法吗?我是说在同一天我不确定我是否理解你的第二个问题,当我使用相同的d运行上述示例时ate代表sdt和tsdt或edt和tedt。它返回相等。你的意思是想让它识别sdt和edt或tsdt和tedt何时相等吗?不,我只是说sdt tsdt和edt tedt。这是因为你在这里创建了一个新的日期实例。所以这两个日期将同时创建,这肯定会比较相等。在哪里我的情况是,我从一个预填充的电子表格中获取tsdt和tedt,该电子表格将与同一日期的不同时间关联,因此它返回的值不相等