Есть два поля начальная дата
и конечная дата
На входе получить начальная дата
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]}")
}
Это решение для 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]}")
}
Как то так:
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();
}
}
тут ответ с примерами
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));
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Имеется list с несколькими значениямиНеобходимо сделать так, чтобы одно из значений всегда находилось внизу списка, независимо от того, чему...
У меня есть две таблицы USER_ и ORDER_Создал классы: