WedX - журнал о программировании и компьютерных науках

Преобразование даты и времени в текущую дату

Как преобразовать поле даты и времени в Grails только в дату, не фиксируя время? Мне нужно сделать это для сравнения с системной датой.

class Trip 
{
    String name
    String city
    Date startDate
    Date endDate
    String purpose
    String notes

    static constraints = {
        name(maxLength: 50, blank: false)
        startDate(validator: {return (it >= new Date())}) // This won't work as it compares the time as well 
        city(maxLength: 30, blank: false)
    }
}
08.12.2008

Ответы:


1

Там [к сожалению] нет «стандартного» метода для выполнения этой операции в Grails|Groovy|Java.

Кто-то всегда добавляет Joda-Time каждый раз, когда возникает вопрос java.util.Date или java.util.Calendar. поднят, но включение еще одной библиотеки не всегда возможно.

Совсем недавно для аналогичной проблемы мы создали класс DateTimeUtil с static методами и что-то вроде следующего, чтобы получить только Date:

class DateTimeUtil {

    // ...

    public static Date getToday() {
        return setMidnight(new Date())
    }

    public static Date getTomorrow() {
        return (getToday() + 1) as Date
    }

    public static Date setMidnight(Date theDate) {
        Calendar cal = Calendar.getInstance()
        cal.setTime(theDate)
        cal.set(Calendar.HOUR_OF_DAY, 0)
        cal.set(Calendar.MINUTE, 0)
        cal.set(Calendar.SECOND, 0)
        cal.set(Calendar.MILLISECOND, 0)
        cal.getTime()
    }

    //...

}

Затем в валидаторе вы можете использовать

startDate(validator: {return (it.after(DateTimeUtil.today))}) //Groovy-ism - today implicitly invokes `getToday()` 
08.12.2008
  • Кажется, это решение, которое я искал, однако по какой-то странной причине оно не работает. проверка не работает даже после того, как я добавил новый класс. Есть ли что-то, чего мне не хватает?? Спасибо 09.12.2008
  • Хм... как это не работает? Я имею в виду, есть ли какие-либо ошибки, предупреждения или сообщения в консоли? Он просто не вызывает проверку? Проверка возвращает ложные срабатывания? 09.12.2008

  • 2

    Я взломал:

    startDate (валидатор: {return (it >= new Date()-1)})

    Это было так просто ;-)

    Чтобы изменить представление на странице GSP:

    <g:datePicker name="startDate" value="${trip?.startDate}" years="${years}"  precision="day" />
    

    Спасибо всем за вклад

    09.12.2008
  • До тех пор, пока допустимо, что startDate проверяется как более поздняя или равная 24 часам назад (т.е. вчера какое-то время), Cool! Я думаю, учитывая мое [ограниченное] понимание проблемы, я бы отказался от ›= и выбрал › (или Date.after(Date)) 09.12.2008

  • 3

    Лучше использовать плагин календаря в Grails.

    25.02.2009

    4

    Вы должны использовать startdate.clearTime()

    Мы делаем это, перезаписывая сеттер для наших классов предметной области, которым нужна только дата, а не время. Таким образом, мы можем сравнить даты двух экземпляров без необходимости делать это позже. :

    def setStartDate( Date date ) {
        date.clearTime()
        startDate = date
    }
    
    15.10.2012

    5

    Попробуйте использовать «java.sql.Date», а не «java.util.Date» в качестве типа вашего свойства Date вместе с

    форматДата

    Цель

    Позволяет форматировать экземпляры java.util.Date с использованием тех же шаблонов, которые определены классом SimpleDateFormat.

    Примеры

    Description

    Атрибуты

    * format (required) - The format to use for the date
    * date (required) - The date object to format
    
    08.12.2008

    6

    Поздно я знаю, но в эти дни не используйте Date, используйте LocalDate. Прекрасно работает в Grails/groovy GORM, и это новый способ работы с Java.

    21.03.2021

    7

    Пробовали ли вы использовать jodatime? Это значительно упрощает работу с датой и временем в Java.

    08.12.2008

    8

    Может быть

    startDate(validator: {d = new Date(); return (it..d) >= 0})
    
    08.12.2008
    Новые материалы

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

    ИИ в аэрокосмической отрасли
    Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


    Для любых предложений по сайту: [email protected]