【问题标题】:How to calculate the time difference and show the result in 00:00 format?如何计算时差并以 00:00 格式显示结果?
【发布时间】:2011-03-02 05:17:25
【问题描述】:

如何计算时差并以 00:00 格式显示结果。 我找不到方法,如何将字符串数据发送到日期以及如何以 EditText 00:00 格式显示结果。 我自己尝试过,但它显示了找不到源的错误。 下面是代码。

public class TimeCalculate extends Activity {

private String mBlock = null;
private String mBlockoff = null;
private String mBlockon = null;

     Date date1,date2;
     EditText block;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    EditText blockoff = (EditText) findViewById(R.id.blockoff);
    mBlockoff = blockoff.getText().toString();

    EditText blockon = (EditText) findViewById(R.id.blockon);
    mBlockon = blockon.getText().toString();
    block = (EditText) findViewById(R.id.block);
    mBlock = getDifference(date1, date2);

         date1 = new Date(mBlockoff);
    date2 = new Date(mBlockon);

              blockon.addTextChangedListener(new TextWatcher() {
        public void afterTextChanged(Editable s) {
            block = (EditText) findViewById(R.id.block);
            mBlock = getDifference(date1, date2);
            block.setText(mBlock);
        }

}

public static String getDifference(Date startTime, Date endTime) {
    String timeDiff;
    if (startTime == null)
        return "[corrupted]";
    Calendar startDateTime = Calendar.getInstance();
    startDateTime.setTime(startTime);
    Calendar endDateTime = Calendar.getInstance();
    endDateTime.setTime(endTime);
    long milliseconds1 = startDateTime.getTimeInMillis();
    long milliseconds2 = endDateTime.getTimeInMillis();
    long diff = milliseconds2 - milliseconds1;
    long hours = diff / (60 * 60 * 1000);
    long minutes = diff / (60 * 1000);
    minutes = minutes - 60 * hours;
    long seconds = diff / (1000);

    timeDiff = hours + ":" + minutes;
    return timeDiff; 
}
}

我使用 SampleDateFormat 修改的代码

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("hh:mm");

    try {
        date1 = simpleDateFormat.parse(mBlockoff);
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    try {
        date2 = simpleDateFormat.parse(mBlockon);
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

然后我调用如下方法

blockon.addTextChangedListener(new TextWatcher() {
        public void afterTextChanged(Editable s) {
            mBlock = getDifference(date1, date2);
            block.setText(mBlock);
        }

【问题讨论】:

    标签: android android-emulator android-layout


    【解决方案1】:

    其中一种方法可以是:
    计算以毫秒为单位的差异,将其转换为秒,然后使用DateUtils.elapsedTime(int sec) 将经过的时间格式化为 hh:mm 格式。

    请参阅DateUtilsFormatter 的文档。

    编辑:示例代码:此函数将以hh:mm:ss 格式返回时间

    String getDifference(long now, long then){
            if(now > then)
                return DateUtils.formatElapsedTime((now - then)/1000L);
            else 
                return "error";
        }
    

    【讨论】:

    • 我试过了,还是报错,我把代码写成return DateUtils.formatElapsedTime(seconds);
    • 什么错误,你尝试了什么?你能用你尝试过的任何方法更新你的问题吗?
    • 在blockOn EditText字段上输入数据时,它在块EditText处显示[损坏]。我还添加了 SampleDateFormat。我再次提到我的代码,请检查它,并给出解决方案。
    【解决方案2】:

    试试这个代码:

     public String timeDiff(int hourStart, int hourEnd, int minuteStart, int minuteEnd){    
            int hourDiff = 0;
            int minDiff = 0;
            if(hourEnd>hourStart){
                hourDiff = hourEnd-hourStart;
            }
            if(hourEnd<hourStart){
                hourEnd = hourEnd+12;
                hourStart = hourStart-12;
                hourDiff= hourEnd-hourStart;
                }
            if(minuteEnd>minuteStart){
                minDiff = minuteEnd-minuteStart;
            }
            if(minuteEnd<minuteStart){
                minuteEnd=minuteEnd+30;
                minuteStart=minuteStart-30;
                minDiff = minuteEnd-minuteStart;
            }
    
            return hourDiff+":"+minDiff;
        }
    

    【讨论】:

    • 想在您的代码中添加一些 cmets 吗? OP 和阅读它的任何人都会更清楚。
    猜你喜欢
    • 1970-01-01
    • 2012-08-08
    • 1970-01-01
    • 1970-01-01
    • 2014-12-29
    • 2018-06-08
    • 1970-01-01
    • 2017-10-23
    • 2011-06-27
    相关资源
    最近更新 更多