Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 日期和时间格式_Android_Datetime_Datetime Format - Fatal编程技术网

Android 日期和时间格式

Android 日期和时间格式,android,datetime,datetime-format,Android,Datetime,Datetime Format,我正在做一个项目,在这个项目中,我需要根据当前时间更改预订订单的时间。我需要做的是获取当前时间,并生成一个时间字符串列表,并将其填充到微调器中。我的开始和结束时间是上午11点到下午2点,现在是下午12点30分。因此,我需要获取当前时间,并生成一个列表视图,显示距离结束时间30分钟的时间间隔。那就是1:00,1:30,2:00 public void doWork() { runOnUiThread(new Runnable() { public void run() {

我正在做一个项目,在这个项目中,我需要根据当前时间更改预订订单的时间。我需要做的是获取当前时间,并生成一个时间字符串列表,并将其填充到微调器中。我的开始和结束时间是上午11点到下午2点,现在是下午12点30分。因此,我需要获取当前时间,并生成一个列表视图,显示距离结束时间30分钟的时间间隔。那就是1:00,1:30,2:00

public void doWork() {
runOnUiThread(new Runnable() {
    public void run() {
        try{
            TextView txtCurrentTime= (TextView)findViewById(R.id.lbltime);
                Date dt = new Date();
                int hours = dt.getHours();
                int minutes = dt.getMinutes();
                int seconds = dt.getSeconds();
                String curTime = hours + ":"+minute + ":"+ seconds;
                txtCurrentTime.setText(curTime);
        }catch (Exception e) {}
    }
});
}

class CountDownRunner implements Runnable{
// @Override
public void run() {
        while(!Thread.currentThread().isInterrupted()){
            try {
            doWork();
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                    Thread.currentThread().interrupt();
            }catch(Exception e){
            }
        }
 }
}

我从中获得了这段代码,因此我可以使用它以hh:mm格式获取当前的小时数和分钟数。如何进一步处理?

我已经为您的问题创建了一个代码逻辑,可能它没有完全实现,但接近您的问题。 首先,我使用日历实例,然后启动一个循环,检查当前小时是否大于14,也就是下午2:00,然后循环将继续生成时间,并以30分钟递增,直到达到下午2:00

 Calendar c1 =Calendar.getInstance();
        String time=""+c1.getTime();
        System.out.println("time="+time);
        System.out.println("hr="+Calendar.HOUR_OF_DAY+"min="+Calendar.MINUTE+"sec="+Calendar.SECOND+"am="+Calendar.AM_PM);
        while(c1.get(Calendar.HOUR_OF_DAY)<=14)
        {
            String hr=""+c1.get(Calendar.HOUR);
            String mi=""+c1.get(Calendar.MINUTE);
            String se=""+c1.get(Calendar.SECOND);
            String curTime = hr + ":"+mi + ":"+ se;
            System.out.println("time="+curTime);
            c1.add(Calendar.MINUTE, 30);
        }

    }
日历c1=Calendar.getInstance(); 字符串时间=“c1.getTime(); System.out.println(“time=“+time”); System.out.println(“hr=“+日历.HOUR\u OF_DAY+”min=“+日历.MINUTE+”sec=“+日历.SECOND+”am=“+日历.am\u PM”);
while(c1.get(Calendar.HOUR\u OF_DAY)为什么不使用SimpleDataFormat

 new SimpleDateFormat("HH:mm:ss zzz").format(new Date(c1.getTime()));

如果要在应用程序上显示当前时间,请使用数字时钟它位于托盘->时间和日期->数字时钟中,它是一个时间连续变化的文本视图。无需使用计时器或线程。主要问题的答案:您可以使用计时器或线程。手动检查小时和分钟,只需做一件事为了提高程序的效率。将布尔变量作为标志值设置为false。在程序开始时,检查每分钟后的小时和分钟。在获得第一个标志后,将该标志设置为True,然后将该线程或计时器睡眠30分钟。您将获得更好的结果。

尝试以下代码:

List<String>timeslot=new ArrayList<String>();


    String stoptime="04:00 PM";
    String starttime="11:00 AM";
    SimpleDateFormat df1=new SimpleDateFormat("hh:mm a");
    Date d1=null;
    Date d2=null;
    try 
    {
         d1=df1.parse(stoptime);
         d2=df1.parse(starttime);
    } 
    catch (ParseException e)
    {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    Calendar now = Calendar.getInstance();

    SimpleDateFormat df2=new SimpleDateFormat("kk");
    String curtime=df2.format(now.getTime());
    stoptime=df2.format(d1);
    starttime=df2.format(d2);
    tv.setText(df2.format(d1));
    tv2.setText(curtime);
    int t1=Integer.parseInt(stoptime);
    int t2=Integer.parseInt(curtime);
    int t3=Integer.parseInt(starttime);
    if(t2>=t3)
    {

    while(t2<t1)
    {
        SimpleDateFormat df4=new SimpleDateFormat("mm");
        String curmin=df4.format(now.getTime());
        String stopmin=df4.format(d1);
        int t4=Integer.parseInt(curmin);
        if(t4<60)
        {
            int t5=60-t4;
            if(t5>30)
            {
                t5=t5-30;
            }
            now.add(Calendar.MINUTE, t5);
            SimpleDateFormat df3=new SimpleDateFormat("hh:mm aa");
            curtime=df3.format(now.getTime());
            timeslot.add(curtime);

        }
        now.add(Calendar.MINUTE, 30);
        SimpleDateFormat df3=new SimpleDateFormat("hh:mm aa");
        curtime=df3.format(now.getTime());
        timeslot.add(curtime);
        curtime=df2.format(now.getTime());
        t2=Integer.parseInt(curtime);
    }
    tv3.setText(curtime);
    ArrayAdapter<String>aa=new ArrayAdapter<String>(getBaseContext(), android.R.layout.simple_spinner_item, timeslot);
    aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    timespin.setAdapter(aa);
    }
Listtimeslot=newArrayList();
字符串stoptime=“04:00 PM”;
字符串starttime=“11:00 AM”;
SimpleDataFormat df1=新SimpleDataFormat(“hh:mm a”);
日期d1=空;
日期d2=空;
尝试
{
d1=df1.parse(停止时间);
d2=df1.parse(starttime);
} 
捕获(解析异常)
{
//TODO自动生成的捕捉块
e、 printStackTrace();
}
Calendar now=Calendar.getInstance();
SimpleDataFormat df2=新的SimpleDataFormat(“kk”);
字符串curtime=df2.format(现在是.getTime());
停止时间=df2.格式(d1);
starttime=df2.format(d2);
tv.setText(df2.format(d1));
tv2.setText(curtime);
int t1=整数.parseInt(停止时间);
int t2=整数.parseInt(curtime);
int t3=整数.parseInt(starttime);
如果(t2>=t3)
{

虽然(t2非常感谢。但是你能解释一下吗?我想你把查询中的数字作为硬编码的数字???好的,首先我以caledar为例,然后启动一个循环,检查当前时间是否大于下午2:00,然后循环将继续到geenarate time,并增加30分钟,直到它达到下午2:00。如果pos需要帮助,请sible Gimme你的电子邮件id。你可以来聊天室Androidmaneesh我没有android room的授权。v可以在android people room见面吗?是的,我知道这一点,但这还不够,伙计。需要更深入地了解它如果你只需要获得给定日历或日期或时间的小时值或分钟值(以毫秒为单位),SimpleDateFormat需要小心点,没有必要重做所有的代码。