Справка по проверке даты в Java Затем выполните преобразование в VB.NET 2010 - PullRequest
1 голос
/ 24 февраля 2011

У меня есть следующий 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 дня с сегодняшнего дня?

Любая помощь будет отличной!Спасибо: 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 в обоих случаях выше.

Ответы [ 4 ]

1 голос
/ 24 февраля 2011

dateFormat.parse берет строку и создает из нее объект Date (если он в заданном формате).

tempDate - это объект Date, для которого установлены текущие дата и время.Поэтому

dateFormat.parse(dateString).after(tempDate)

проверяет, является ли дата, возвращаемая из базы данных (begin_date), позже текущего времени.

Во втором случае cal является экземпляром Calendar, который былустановите текущее время, затем вернитесь на 3 дня назад.Таким образом, он сравнивает due_date из базы данных с текущим временем 3 дня назад.

1 голос
/ 24 февраля 2011

Первый пример проверяет, находится ли begin_date (игнорируя последние 2 символа, которые, как я предполагаю, являются секундами), в будущем.

Второй пример проверяет, превышает ли срок выполнения более трехдни в будущем ((срок исполнения - 3 дня) позже).

1 голос
/ 24 февраля 2011

Да, я считаю, что обе ваши догадки верны.

И у вас есть мои симпатии к тому, что вам приходится иметь дело с такого рода монолитным кодом.

1 голос
/ 24 февраля 2011
(dateFormat.parse(dateString).after(tempDate)) 

оценивается как истина, если дата, описанная dateString, идет после tempDate.

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

оценивается как истина, если дата, описанная endDate, идет после сегодняшнего дня минус 3 дня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...