首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何对小时和分钟进行加减

问如何对小时和分钟进行加减
EN

Stack Overflow用户
提问于 2019-05-22 01:30:36
回答 3查看 1.8K关注 0票数 2

我有一些问题。我是一个初级程序员。我需要用Android Studio创建一个像时钟一样的应用程序,并需要添加和减去小时和分钟。当我按+1H时,需要加上1H才能与+1M和-1M相同,我不能协调,我该怎么做呢?我是这样做的,当时钟再次到达23:59时,它是00:00,所以循环

代码语言:javascript
复制
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 + ""));
                }
            }
        });
    }
}
EN

回答 3

Stack Overflow用户

发布于 2019-05-22 21:15:31

java.time和ThreeTenABP

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

代码语言:javascript
复制
    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

问:我可以在安卓系统上使用java.time吗?

是的,java.time在旧的和新的安卓设备上都能很好地工作。它只需要至少Java6即可。

Java8及更高版本和更新的安卓设备(从API26)上的

  • 内置了现代的API。Java6和7中的
  • 获得了ThreeTen后端,这是现代类的后端(JSR310的ThreeTen;请参阅底部的链接)。(较老的)安卓上的
  • 使用的是ThreeTen后端的安卓版本。它被称为ThreeTenABP。并确保使用subpackages.

从org.threeten.bp导入date和time类

链接

票数 2
EN

Stack Overflow用户

发布于 2019-05-22 03:09:53

为此,请使用Calendar#add。令人困惑的是,你可以用它来做加法和减法。

代码语言:javascript
复制
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

当涉及到打印时间时,API24版以下的默认选项是使用DateFormat。因此,与其自己尝试确定它,不如:

代码语言:javascript
复制
final SimpleDateFormat format = new SimpleDateFormat("HH:mm"); //hours and minutes, 24hr clock
textView.setText(format.format(calendar.getTime());

但是,一定要注意SimpleDateFormat有一些问题,特别是在多线程方面。正如Ole V.V.在评论中建议的那样,您应该考虑使用ThreeTenABP库。

如果您的目标是24+应用编程接口,您可以使用java.time包中的Java8附加特性,比如Instant和DateTimeFormatter

票数 1
EN

Stack Overflow用户

发布于 2019-05-22 02:34:33

这段代码可能会帮助你获得时间,并适当地递增或递减。

代码语言:javascript
复制
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);
        }
    }
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56243594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档