簡體   English   中英

Java日期檢查幫助然后轉換為VB.NET 2010

[英]Java date checking help Then convert to VB.NET 2010

我有以下Java代碼,我試圖剖析,以更好地了解它所做的一切:

try {
     String userName = System.getenv("USERNAME");
     DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH.mm.ss");
     OracleDataSource ds = new OracleDataSource();
     ds.setDriverType("thin");
     ds.setServerName("xxxxxxx");
     ds.setPortNumber(151);
     ds.setDatabaseName("uServer");
     ds.setUser("userhere");
     ds.setPassword("xxxxxxxxxxxx");
     ResultSet rset = null;
     Connection conn = ds.getConnection();

     Statement stmt = conn.createStatement(rset.TYPE_SCROLL_SENSITIVE, rset.CONCUR_UPDATABLE);
     rset = stmt.executeQuery("select status, due_date, subject, message, begin_date "
            + "from notifications "
            + "where status = 'OPEN' and recipient_role <> 'SYSADMIN' " + "and recipient_role = 'userhere' "
            + "order by due_date");

     while (rset.next()) {
          try {
               String tempString = rset.getString("begin_date");
               String message = rset.getString("message").replace("\r", "");
               message = message.replace("\n", "");
               String dateString = rset.getString("begin_date");
               int len = dateString.length();
               dateString = dateString.substring(0, len - 2);
               java.util.Date tempDate = new java.util.Date();

               if (dateFormat.parse(dateString).after(tempDate)) {
                   trayIcon.displayMessage(rset.getString("subject"), message, TrayIcon.MessageType.INFO);
               }

               Thread.sleep(1750);
          } catch (Exception pe) {
               pe.printStackTrace();
          }
     }

     //Fill the table on the Form
     JTable tbl = OracleWorkflowNotifierView.jTable;
     rset.beforeFirst();
     int rsetCount = 0;

     while (rset.next()) {
          rsetCount++;
     }

     if (rsetCount == 0) {
          ImageIcon image = new ImageIcon(Toolkit.getDefaultToolkit().createImage(url_green));
          trayIcon.setImage(image.getImage());
     } else {
          ImageIcon image = new ImageIcon(Toolkit.getDefaultToolkit().createImage(url_yellow));
          trayIcon.setImage(image.getImage());
     }

     rset.beforeFirst();

     while (rset.next()) {
          java.util.Date today = new java.util.Date();
          String endDate = rset.getString("due_date");
          Calendar cal = Calendar.getInstance();
          cal.setTime(today);
          cal.add(Calendar.DATE, -3);

          if (dateFormat.parse(endDate).after(cal.getTime())) {
              ImageIcon image = new ImageIcon(Toolkit.getDefaultToolkit().createImage(url_red));
              trayIcon.setImage(image.getImage());
          }
     }

我不確定這里的比較是什么?

 if (dateFormat.parse(dateString).after(tempDate)) {
     trayIcon.displayMessage(rset.getString("subject"), message, TrayIcon.MessageType.INFO);
 }

它是在查看開始日期減去當前日期嗎?

然后這一個:

 java.util.Date today = new java.util.Date();
 String endDate = rset.getString("due_date");
 Calendar cal = Calendar.getInstance();
 cal.setTime(today);
 cal.add(Calendar.DATE, -3);

 if (dateFormat.parse(endDate).after(cal.getTime())) {
     ImageIcon image = new ImageIcon(Toolkit.getDefaultToolkit().createImage(url_red));
     trayIcon.setImage(image.getImage());
 }

從今天開始減去3天后是否會看到duedate?

任何幫助都會很棒! 謝謝:o)

大衛

VB.NET代碼

那么,根據下面的反饋,這是否適合在VB.net中替代它(我的問題的第二部分)?

If Format(dr(1), "MM/dd/yyyy") >= DateAdd("d", 3, Format(Now, "MM/dd/yyyy")) Then

我的問題的第一部分是:

If Format(dr(1), "MM/dd/yyyy") >= DateAdd("d", 1, Format(Now, "MM/dd/yyyy")) Then

其中dr(1)= dueDate在上述兩種情況下。

(dateFormat.parse(dateString).after(tempDate)) 

計算結果為真,如果所描述的日期dateString是后tempDate

dateFormat.parse(endDate).after(cal.getTime())

如果endDate描述的日期在今天減去3天之后,則評估為true。

第一個例子是檢查begin_date(忽略最后2個字符,我假設是秒)是否在將來。

第二個例子是檢查到期日是否超過三天((截止日期 - 3天)是否已經過去)。

是的,我相信你的推測都是正確的。

你對我必須處理那種單片代碼表示同情。

dateFormat.parse接受一個字符串並從中創建一個Date對象(如果它是給定的格式)。

tempDate是一個Date對象,設置為當前日期和時間。 所以

dateFormat.parse(dateString).after(tempDate)

正在檢查從數據庫返回的日期(begin_date)是否在當前時間之后。

在第二個實例中, cal是設置為當前時間的Calendar實例,然后設置為3天。 因此,它將數據庫中的due_date與3天前的當前時間進行比較。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM