【问题标题】:Compare time in different dates in Android在Android中比较不同日期的时间
【发布时间】:2015-01-16 09:33:17
【问题描述】:

如果当前时间在今天晚上 9 点到明天早上 9 点之间,我想发送一条提醒短信。也就是说,日期不同。我该如何实施?任何人都请帮助我。我不知道如何比较不同日期的时间。我附上我的代码(获得的输出)有两个时间间隔。 ` 包 com.example.alert;

import java.util.Calendar;
import android.support.v7.app.ActionBarActivity;
import android.telephony.SmsManager;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class AlertActivity extends ActionBarActivity {
EditText Phnumber,Alert;
Button Send;

Calendar c = Calendar.getInstance();
int hours = c.get(Calendar.HOUR_OF_DAY);
int minutes = c.get(Calendar.MINUTE);
String CurrentTime=hours + ":" + minutes;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_alert);

Phnumber=(EditText)findViewById(R.id.phoneNumber);
Alert=(EditText)findViewById(R.id.smsBody);
Send=(Button)findViewById(R.id.send);

Send.setOnClickListener(new OnClickListener() {


    @Override
    public void onClick(View v) {

         Toast.makeText(getApplicationContext(), CurrentTime,
                   Toast.LENGTH_LONG).show();
        if(hours>=10&& hours<=20){
              String phoneNo = Phnumber.getText().toString();
                 String msg = Alert.getText().toString(); 
             SmsManager smsManager = SmsManager.getDefault();
                smsManager.sendTextMessage(phoneNo, null, msg, null, null);    
                Toast.makeText(getApplicationContext(), "Message Sent",
                   Toast.LENGTH_LONG).show();
        }
        else{
            Toast.makeText(getApplicationContext(), "Message was not Sent",
                       Toast.LENGTH_LONG).show();
        }
        // TODO Auto-generated method stub


    }
});

    }






}

`

【问题讨论】:

  • 如果当前时间在今天晚上 9 点到明天早上 9 点之间??这是什么意思??
  • 您的输入日期格式是什么?例如 9:00AM 15-01-2014
  • 您必须添加日期和时间才能获得确切的差异。否则你无法在不同的日子里得到时间之间的差异

标签: android date time calendar sms


【解决方案1】:

试试这个

    SimpleDateFormat dateFormat=new SimpleDateFormat("MM-dd-yyyy hh:mm");
                Date date =dateFormat.parse(result_string);
                Date currentDate=dateFormat.parse(dateFormat.format(new Date()));

                if(date.compareTo(currentDate)>0){
                ////Do your thing
                }

【讨论】:

    【解决方案2】:

    如果您想要在晚上 9 点之后到早上 9 点之前的时间,您可以使用以下条件..

    if(cal.get(Calendar.HOUR_OF_DAY)> 20 || cal.get(Calendar.HOUR_OF_DAY)< 9)
    {
        // do your stuffs
    }
    

    【讨论】:

      【解决方案3】:

      您应该创建两个日历日期。

       Calendar calendar_before = Calendar.getInstance();
       calendar_before .set(Calendar.DAY_OF_MONTH, yourday);
       calendar_before .set(Calendar.HOUR_OF_DAY, yourhour);
       calendar_before .set(Calendar.MINUTES, yourminutes);
       calendar_before .set(Calendar.SECONDS, yourseconds);
      
       Calendar calendar_after = Calendar.getInstance();
       calendar_after .set(Calendar.DAY_OF_MONTH, yourday);
       calendar_after .set(Calendar.HOUR_OF_DAY, yourhour);
       calendar_after .set(Calendar.MINUTES, yourminutes);
       calendar_after  .set(Calendar.SECONDS, yourseconds);
      
       Calendar cNow = Calendar.getInstance();
      
       [...]
      
       // check if your systime is between...
       if(cNow.getTimeInMillis() > calendar_before.getTimeInMillis() && cNow.getTimeInMillis() < calendar_after.getTimeInMillis())
       {
        // do something...
       }
      

      【讨论】:

        【解决方案4】:
        DateTimeUtils obj = new DateTimeUtils();
         SimpleDateFormat simpleDateFormat = 
                new SimpleDateFormat("EEE, d MMM yyyy, hh:mm a");
        
        try {
        
        Date date1 = simpleDateFormat.parse("Thu Jan 15 09:56:00 GMT+05:30 2015");
        Date date2 = simpleDateFormat.parse("Thu Jan 16 09:56:00 GMT+05:30 2015");
        
        obj.printDifference(date1, date2);
        
        } catch (ParseException e) {
        e.printStackTrace();
        }
        
        }
         //1 minute = 60 seconds
         //1 hour = 60 x 60 = 3600
         //1 day = 3600 x 24 = 86400
        public void printDifference(Date startDate, Date endDate){
        
        //milliseconds
        long different = endDate.getTime() - startDate.getTime();
        
        System.out.println("startDate : " + startDate);
        System.out.println("endDate : "+ endDate);
        System.out.println("different : " + different);
        
        long secondsInMilli = 1000;
        long minutesInMilli = secondsInMilli * 60;
        long hoursInMilli = minutesInMilli * 60;
        long daysInMilli = hoursInMilli * 24;
        
        long elapsedDays = different / daysInMilli;
        different = different % daysInMilli;
        
        long elapsedHours = different / hoursInMilli;
        different = different % hoursInMilli;
        
        long elapsedMinutes = different / minutesInMilli;
        different = different % minutesInMilli;
        
        long elapsedSeconds = different / secondsInMilli;
        
        System.out.printf(
            "%d days, %d hours, %d minutes, %d seconds%n", 
            elapsedDays,
            elapsedHours, elapsedMinutes, elapsedSeconds);
        
        }
        

        根据您的输入更改日期输入格式

        【讨论】:

          【解决方案5】:

          如何在 Toast 中显示System.out.printf

          System.out.printf("%d days, %d hours, %d minutes, %d seconds%n", elapsedDays, elapsedHours, elapsedMinutes, elapsedSeconds);
          

          【讨论】:

            猜你喜欢
            • 2021-09-20
            • 2011-01-21
            • 2012-12-29
            • 2012-11-22
            • 2016-10-10
            • 2012-01-20
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多