android 如何加减小时和分钟

mec1mxoz  于 2022-12-02  发布在  Android
关注(0)|答案(4)|浏览(434)

我有一些问题。我是一个初学者程序员。我需要创建一个应用程序,就像一个时钟与Android工作室,需要增加和减少小时和分钟。当我按下+1H将需要增加1H采取相同的+1M和-1M,我不能协调我怎么能做到这一点。我这样做,当时钟再次达到23:59,它是00:00,如此循环

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    private Button button,button2,button3,button4;
    private TextView textView;
    int hour = 0;
    int minute = 0;
    int count = 0;

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

        button = findViewById(R.id.button);
        button2 = findViewById(R.id.button2);
        button3 = findViewById(R.id.button3);
        button4 = findViewById(R.id.button4);
        textView = findViewById(R.id.res);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                    if (hour >= 9) {
                        textView.setText((++hour + "") + ":" + "00");
                    } else {
                        textView.setText("0" + (++hour + "") + ":" + "00");
                    }

            }
        });
        button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(hour>=9) {
                    textView.setText((--hour + "") + ":" + "00");
                }else{
                    textView.setText("0"+(--hour + "") + ":" + "00");
                }
            }
        });
        button3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(minute>=9) {
                    textView.setText("00" + ":" + (++minute + ""));
                }else{
                    textView.setText("00" + ":" + "0"+(++minute + ""));
                }
            }
        });
        button4.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(minute>=9) {
                    textView.setText("00" + ":" + (--minute + ""));
                }else{
                    textView.setText("00" + ":" + "0"+(--minute + ""));
                }
            }
        });
    }
}
okxuctiv

okxuctiv1#

java.时间和三个TenABP

所有这些功能都已经存在了。使用java.time中的LocalTime,java. time是现代Java日期和时间API。下面是一个简短的演示,输出在注解中给出:

LocalTime time = LocalTime.of(23, 59);
    System.out.println(time); // 23:59
    time = time.minusHours(1);
    System.out.println(time); // 22:59
    time = time.minusMinutes(1);
    System.out.println(time); // 22:58
    time = time.plusHours(1);
    System.out.println(time); // 23:58
    time = time.plusMinutes(1);
    System.out.println(time); // 23:59
    time = time.plusHours(1);
    System.out.println(time); // 00:59
    time = time.plusMinutes(1);
    System.out.println(time); // 01:00

问题:我可以在Android上使用java.time吗?

是的,java.time在新旧Android设备上都能很好地工作。它只需要至少Java 6

  • 在Java 8和更高版本以及更新的Android设备(从API级别26开始)中,现代API是内置的。
  • 在Java 6和7中获得ThreeTen Backport,现代类的Backport(ThreeTen用于JSR 310;请参阅底部的链接)。
  • 在(较旧的)Android上使用Android版的ThreeTen Backport,它被称为ThreeTenABP,并确保从org.threeten.bp导入带有子包的日期和时间类。

链接

osh3o9ms

osh3o9ms2#

使用Calendar#add来完成这个任务。令人困惑的是,你可以用它来做加法和减法。

final Calendar calendar = Calendar.getInstance(); //A calendar set to the current time
calendar.add(Calendar.HOUR_OF_DAY, 1); //Add one hour
calendar.add(Calendar.HOUR_OF_DAY, -1); //Subtract one hour

当涉及到打印时间时,API版本〈24的默认选项是使用DateFormat。因此,不要试图自己确定它:

final SimpleDateFormat format = new SimpleDateFormat("HH:mm"); //hours and minutes, 24hr clock
textView.setText(format.format(calendar.getTime());

但是,请注意SimpleDateFormat存在一些问题,特别是在多线程方面。正如Ole V.V.在评论中建议的那样,您应该考虑使用ThreeTenABP库。
如果您的目标是API 24+,则可以在java.time包中利用Java 8的附加功能,如InstantDateTimeFormatter

ddrv8njm

ddrv8njm3#

可能这个代码将帮助您获得时间,并让它正确地增加或减少。

Calendar calendar = Calendar.getInstance();
calendar.setTime(yourdate);
int hours = calendar.get(Calendar.HOUR_OF_DAY);
int minutes = calendar.get(Calendar.MINUTE);
int seconds = calendar.get(Calendar.SECOND);
b.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e){
        if(hours>=9)
        {
            hours=hours+1;
            textView.setText(hours+":"+minutes+":"+seconds);
        }
        else
        {
            textView.setText(hours+":"+minutes+":"+seconds);
        }
    }
});
b1.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e){
        if(hours>=9)
        {
            hours=hours-1;
            textView.setText(hours+":"+minutes+":"+seconds);
        }
        else
        {
            textView.setText(hours+":"+minutes+":"+seconds);
        }
    }
});
b2.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e){
        if(minutes>=9)
        {
            minutes=minutes+1;
            textView.setText(hours+":"+minutes+":"+seconds);
        }
        else
        {
            textView.setText(hours+":"+minutes+":"+seconds);
        }
    }
});
b3.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e){
        if(minutes>=9)
        {
            minutes=mminutes-1;
            textView.setText(hours+":"+minutes+":"+seconds);
        }
        else
        {
            textView.setText(hours+":"+minutes+":"+seconds);
        }
    }
});
wfauudbj

wfauudbj4#

若要以Kotlin语言在目前时间加上或减去30分钟:

val timeFormat = SimpleDateFormat("hh:mm:ss", Locale.US)
    val date = Date()
    val c = Calendar.getInstance()
    c.time = date
    //30 for add 30 minutes or -30 to minus 30 minutes
    c.add(Calendar.MINUTE, -30)
    val timeMinus30 = c.time
    val timeInString = timeFormat.format(timeMinus30)

相关问题