У меня есть почти законченный скрипт, но есть одна небольшая икота, которую я не могу исправить.Дата вычитания календаря
Прежде всего позвольте мне быстро объяснить сценарий. Он получает текущую дату, используя Calendar
. Затем он добавляет 2 дня к текущей дате, после чего создает формат, чтобы изменить формат новой даты. Затем он печатает эту новую дату в TXT-файле, после чего она получает эту дату из файла .txt с помощью Scanner
. Именно здесь, где я испытываю небольшую неприятность. Эта новая дата, которую я получил из TXT-файла, хотел бы вычесть из текущей текущей даты. Таким образом, я мог бы иметь обратный отсчет с текущей системной даты и до 2 дней с этого. В настоящее время код вычитается с использованием переменной даты todAdd
в функции вычитания/обратного отсчета, которая является последними 6 строками кода. Но вместо того, чтобы быть этой переменной даты, я бы хотел, чтобы это была переменная 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");
}
}
Сообщите нам об ошибке. – chevydog