[英]Calendar subtract date issue
我的腳本差不多完成了,但是有一點打fix似乎無法解決。
首先讓我快速解釋一下腳本。 它使用Calendar
獲取當前日期。 然后,它向該當前日期增加2天,然后創建格式,以更改新日期的格式。 然后,它將新日期打印到.txt文件中,然后使用Scanner
從.txt文件中獲取該日期。 到了這里,我遇到了一些小麻煩。 我要從.txt文件中獲得的那個新日期要從實際的當前日期中減去。 因此,我可以從當前系統日期開始倒計時,直到從該日期開始倒數2天。 當前,代碼是使用減/倒數功能中的日期變量todAdd
減去,該變量是代碼的最后6行。 但是我不希望它成為dateFroText
變量,而是希望它成為dateFroText
變量,但是由於它似乎不能很好地處理變量的解析,因此我無法將其解析為最后的減法代碼。
因此基本上可以舉一個例子,我希望整個倒數計時部分的todAdd
更改為dateFroText
。 因此,而不是您在下面的完整代碼中看到的行,就像這樣: int yearDiff = dateFroText.get(Calendar.YEAR) - startDat.get(Calendar.YEAR);
目前,我嘗試將其更改為integer
, string
和date
但是所有這些均生成一個錯誤,這使得無法運行代碼。
如有必要,我已復制了整個代碼,因此您可以進行實際測試。
public class CdowTDate
{
static File dFileD = new File("date.txt");
static String date = "";
public static void main(String[] args) throws ParseException {
//Get current date and time
Calendar startDat = Calendar.getInstance();
System.out.println("Current date: " + startDat.getTime());
//Get that current date and time and then add 2 days
Calendar todAdd = Calendar.getInstance();
todAdd.add(Calendar.DATE, 2);
System.out.println("Date in 2 days: " + todAdd.getTime());
//Create a format for sending date to text file
SimpleDateFormat formDat = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z");
String formatted = formDat.format(todAdd.getTime());
System.out.println("Formatted: " + formatted);
try{
PrintWriter dW = new PrintWriter("date.txt");
dW.println(formatted);
dW.close();
} catch (IOException e) {
}
System.out.println(formDat.parse(formatted));
try {
Scanner dateRead = new Scanner(dFileD);
while (dateRead.hasNextLine()) {
date = dateRead.nextLine();
Date dateFroText = formDat.parse(date);
System.out.println("Date from text new format: " + dateFroText);
}
dateRead.close();
} catch (Exception e) {
System.out.println("Error!");
}
int yearDiff = todAdd.get(Calendar.YEAR) - startDat.get(Calendar.YEAR);
int dayDiff = ((yearDiff*365) + todAdd.get(Calendar.DAY_OF_YEAR)) - startDat.get(Calendar.DAY_OF_YEAR);
dayDiff--;
int hourDiffer = todAdd.get(Calendar.HOUR_OF_DAY)+23 - startDat.get(Calendar.HOUR_OF_DAY);
int minuDiff = todAdd.get(Calendar.MINUTE)+60 - startDat.get(Calendar.MINUTE);
System.out.println(dayDiff + " days " + hourDiffer + " hours " + minuDiff +" minutes remaining");
}
}
您需要將日期對象dateFroTxt轉換為Calendar對象以進行計算。
public static void main(String[] args) throws ParseException {
//Get current date and time
Calendar startDat = Calendar.getInstance();
System.out.println("Current date: " + startDat.getTime());
//Get that current date and time and then add 2 days
Calendar todAdd = Calendar.getInstance();
todAdd.add(Calendar.DATE, 2);
System.out.println("Date in 2 days: " + todAdd.getTime());
//Create a format for sending date to text file
SimpleDateFormat formDat = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z");
String formatted = formDat.format(todAdd.getTime());
System.out.println("Formatted: " + formatted);
try {
PrintWriter dW = new PrintWriter("date.txt");
dW.println(formatted);
dW.close();
} catch (IOException e) {
}
System.out.println(formDat.parse(formatted));
Date dateFroText = null;
try {
Scanner dateRead = new Scanner(dFileD);
while (dateRead.hasNextLine()) {
date = dateRead.nextLine();
dateFroText = formDat.parse(date);
System.out.println("Date from text new format: " + dateFroText);
}
dateRead.close();
} catch (Exception e) {
System.out.println("Error!");
}
if (dateFroText != null) {
Calendar dateFromTxtCal = Calendar.getInstance();
dateFromTxtCal.setTime(dateFroText);
int yearDiff = dateFromTxtCal.get(Calendar.YEAR) - startDat.get(Calendar.YEAR);
int dayDiff = ((yearDiff * 365) + dateFromTxtCal.get(Calendar.DAY_OF_YEAR)) - startDat.get(Calendar.DAY_OF_YEAR);
dayDiff--;
int hourDiffer = dateFromTxtCal.get(Calendar.HOUR_OF_DAY) + 23 - startDat.get(Calendar.HOUR_OF_DAY);
int minuDiff = dateFromTxtCal.get(Calendar.MINUTE) + 60 - startDat.get(Calendar.MINUTE);
System.out.println(dayDiff + " days " + hourDiffer + " hours " + minuDiff + " minutes remaining");
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.