Android ScheduledExecutor服务计划问题

Android ScheduledExecutor服务计划问题,android,Android,我有一个发送延迟文本的应用程序。我称之为: Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC")); long delay = cal.getTimeInMillis(); smsControl.sendSMSLater(phoneNumber, msg, (date - delay)); 其余的是: class smsControl { static ScheduledExecutorService schedule

我有一个发送延迟文本的应用程序。我称之为:

Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
long delay = cal.getTimeInMillis();
smsControl.sendSMSLater(phoneNumber, msg, (date - delay));
其余的是:

class smsControl {

static ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(1);

public static void sendSMSLater(final String phoneNumber, final String msg, long date) {
    ScheduledFuture scheduledFuture = scheduledExecutorService.schedule(new Callable() {
        public Object call() throws Exception {
            SmsManager smsManager = SmsManager.getDefault();
            String smsNumber = phoneNumber;
            String smsText = msg;
            smsManager.sendTextMessage(smsNumber, null, smsText, null, null);
            return "Sent!";
        }
    }, date, TimeUnit.MILLISECONDS);

}
}

问题是它没有等待延迟的时间日期。它很快就发送了。
任何见解都有帮助!谢谢

如何在
smsControl.sendSMSLater(phoneNumber,msg,(date-delay))中计算日期日期是用户通过DatePicker输入的存储时间,然后我将其转换为长时间。延迟应为当前时间
code
cal=Calendar.getInstance(TimeZone.getTimeZone(“UTC”);校准集(日历年,mYear);校准设置(日历、月份、月);校准设置(日历日/月/日,mDay);cal.set(Calendar.HOUR\u OF_DAY,tpResult.getCurrentHour());cal.set(Calendar.MINUTE,tpResult.getCurrentMinute());校准设置(日历秒,0);editdate=cal.getTimeInMillis()
code
尝试记录
(日期延迟)
的值,以查看该计算结果。嗯,我认为问题在于,我的日期似乎晚了7小时,因此我得到了负偏移量。是时候看看为什么我会有时差了,尽管它们都初始化为UTC。谢谢你的帮助!