如何在java中设置警报

时间:2017-09-10 19:50:45

标签: java desktop alarm

我目前正在尝试使用java在我进入程序的特定时间打开我的默认网络浏览器到YouTube视频(为了发出警报)

这是我的代码:

import java.awt.Desktop;
import java.net.URI;
import java.net.URISyntaxException;
import java.io.IOException;


public class YtAlarm
{
    int hr;
    int min;
    public YtAlarm(int hours, int minutes) //constructor 
    {
        hr = hours;
        min = minutes;
    }

    public static void main (String [] args) throws URISyntaxException, IOException //main method
    {
         String url = "https://www.youtube.com"; //link to open once alarm goes off

         YtAlarm ytalarm = new YtAlarm(15, 20); //sets alarm to go off at 3:20 PM
         long alarm1 = ytalarm.convertTimeToMilli(); //converts alarm time to ms


        do //checks what time it is on each itteration and once alarm1== curent time, opens yt video
        { 
            if (System.currentTimeMillis() == alarm1)
             {
                if (Desktop.isDesktopSupported())
                {
                     Desktop.getDesktop().browse(new URI(url));
                }
             }
         } 
         while (System.currentTimeMillis()!= time); 
    }

    public long convertTimeToMilli() //method to convert alarm time from hours and minutes to ms
    {
         long milli = (60000*min) + (3600000*hr);
         return milli;
    }
}

此代码编译时没有错误但无法正常运行。当前时间与我输入构造函数的时间相匹配时,它不会打开我输入的链接。有谁知道如何更改我的代码,以便它按照我打算的方式运行?

1 个答案:

答案 0 :(得分:-1)

首先将您的alarm1值与System.currentTimeMillis()值进行比较,您将知道原因。实际上,从1970年1月1日到现在,System.currentTimeMillis()总共为您提供了毫秒,而从午夜到该时间(15:20)总共为毫秒。 您可以使用 LocalDateTime now = LocalDateTime.now(); int hour=now.getHour(); int minute=now.getMinute();

在此之后,将小时与小时以及分钟与分钟进行比较。