Случайная генерация двух дат до 30 дней

237
26 мая 2018, 19:10

Есть два поля начальная дата и конечная дата На входе получить начальная дата c текущей датой, конечная дата должна быть выше начальная дата, но не более 30 дней в случайной генерации.

Использую в Android UI тестах. Крашится на toInstant(). Тут:

val start = MakeTimeN().generation(Date().toInstant().epochSecond.toInt()) 
java.lang.NoSuchMethodError: java.util.Date.toInstant

В IntelliJ Idea работает прекрасно.

import java.text.SimpleDateFormat
import java.util.*
import kotlin.collections.ArrayList
class MakeTimeN {
    private fun ClosedRange<Int>.random() = Random().nextInt(endInclusive - start) + start
    private fun generation(minTimeStamp: Int): Int {
        return (minTimeStamp..minTimeStamp + 60 * 60 * 24 * 28).random()
    }
    fun make(): ArrayList<Int> {
        val start = MakeTimeN().generation(Date().toInstant().epochSecond.toInt())        
        val end = MakeTimeN().generation(start)
        val secondDate = SimpleDateFormat("ddMMyyyy").format(Date(end.toLong() * 1000))
        var day = secondDate.substring(0, 2).toInt()
        var month = secondDate.substring(3, 4).toInt()
        var year = secondDate.substring(4).toInt()
        val arrayList = arrayListOf<Int>()
        arrayList.add(day)
        arrayList.add(month)
        arrayList.add(year)
        return arrayList
    }
}
fun main(args: Array<String>) {
    val arrayList = MakeTimeN().make()
    println("${arrayList[0]}, ${arrayList[1]}, ${arrayList[2]}")
}
Answer 1

Это решение для android studio. В IntelliJ Idea есть методы, которые недоступны в android studio, хотя подсказки говорят об обратном. Проблема была тут:
val start = MakeTimeN().generation(Date().toInstant().epochSecond.toInt())
Лог: java.lang.NoSuchMethodError: java.util.Date.toInstant

class Result {
        fun generateRandomDateFromBeginToMaxDay(begin: Date, maxDate: Int): Date {
            val calendar = Calendar.getInstance()
            calendar.time = begin
            val random = Random().nextInt(maxDate) + 1
            calendar.add(Calendar.DAY_OF_MONTH, random)
            return calendar.time
        }
        fun DisassembleAndTransferDate(amountOfDays: Int): ArrayList<Int> {
            val date = Date()
            var result = Result().generateRandomDateFromBeginToMaxDay(date, amountOfDays).format(DateMask.APP_VIEW)
            var day = result.split(".")[0].toInt()
            var month = result.split(".")[1].toInt()
            var year = result.split(".")[2].toInt()
            val arrayList = arrayListOf<Int>()
            arrayList.add(day)
            arrayList.add(month)
            arrayList.add(year)
            return arrayList
        }
    }
fun main(args: Array<String>) {
    val arrayList = Result().DisassembleAndTransferDate(30)
    println("${arrayList[0]}, ${arrayList[1]}, ${arrayList[2]}")
}
Answer 2

Как то так:

     import java.util.Calendar;
     import java.util.Date;
     import java.util.Random;
     import java.util.logging.Logger;
     public class DateTest {
        private static final Logger LOG = Logger.getLogger(DateTest.class.getName());
        public static void main(String[] args) {
            for (int i = 0; i < 5; i++){
                Date date = new Date();
                System.out.printf("> begin: [%s] end: [%s]\n",date,generateRandomDateFromBeginToMaxDay(date, 30));
            }
        }
        private static Date generateRandomDateFromBeginToMaxDay(Date begin, int maxDate) {
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(begin);
            int random = new Random().nextInt(maxDate) + 1;
            calendar.add(Calendar.DAY_OF_MONTH, random);
            return calendar.getTime();
        }
     }
Answer 3

тут ответ с примерами

http://developer.alexanderklimov.ru/android/java/date.php

Можно сдвинуть дату на определённый период с помощью метода add(). Отодвинем дату на два месяца:

GregorianCalendar calendar = new GregorianCalendar(1975,
    Calendar.DECEMBER, 31);
calendar.add(Calendar.MONTH, 2);
System.out.println(calendar.get(Calendar.MONTH));
READ ALSO
Сортировка List Java [закрыт]

Сортировка List Java [закрыт]

Имеется list с несколькими значениямиНеобходимо сделать так, чтобы одно из значений всегда находилось внизу списка, независимо от того, чему...

204
Ошибка при сохранении объекта в базу данных Oracle

Ошибка при сохранении объекта в базу данных Oracle

У меня есть две таблицы USER_ и ORDER_Создал классы:

240
Spring mvc не находит страницу - 404. Решено (вроде бы)

Spring mvc не находит страницу - 404. Решено (вроде бы)

уже не знаю что делатьВсе перепроверил

230