[英]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.