【问题标题】:g:formatDate grails taglib does not work with java.time.chrono.HijrahDate instanceg:formatDate grails taglib 不适用于 java.time.chrono.HijrahDate 实例
【发布时间】:2014-11-25 17:30:18
【问题描述】:
 HijrahChronology.INSTANCE.date(LocalDate.of(year, month, day));

此代码用于使用 JAVA8UmalQuraCalendar API 将日期转换为 Hijrah Date。

<g:formatDate date="${hijrahDate}" /> 引发异常:

Class
java.lang.IllegalArgumentException
Message
Unknown class: org.codehaus.groovy.grails.web.util.StreamCharBuffer

如何在 GSP 中格式化java.time.chrono.HijrahDate 对象?

【问题讨论】:

  • 您能否展示创建hirajDate 并使其可用于GSP 的代码?

标签: grails java-8 umalquracalendar


【解决方案1】:

已解决!

用例:

  <abdennour:formatDate showTime="true" date="${new Date()}" type="hijri"/>

另一个

   <abdennour:formatDate showTime="true" date="${new Date()}" format="dd/MMM/YYYY" type="hijri"/>

注意事项:

  • type属性不存在,说明你隐式使用了g:formatDate
  • 如果type="hijri",format仅包含dd,MMM或/和YYYY,如果要显示时间,添加showTime属性。

API

服务:

 class UtilsService {
    java.time.chrono.HijrahDate  toHijri(Date date){

            //return HijrahChronology.INSTANCE.date(Instant.ofEpochMilli(date.getTime()));
            Calendar cl=Calendar.getInstance()
            cl.setTime(date);
            return   toHijri(cl.get(Calendar.YEAR), cl.get(Calendar.MONTH)+1, cl.get(Calendar.DATE));
        }

        java.time.chrono.HijrahDate toHijri(int year,int month,int day){


            return   HijrahChronology.INSTANCE.date(LocalDate.of(year, month, day));
        }

}

标签库:

class UtilsTagLib {
    static namespace='abdennour'
    def utilsService
def formatDate={at,b->
        if(at?.type && at?.type?.toLowerCase()?.startsWith("hij")){
            at.dateh=utilsService.toHijri(at.date);
            if(!at?.format){at?.format='dd-MM-YYYY'}
            //at?.fullformat=at?.format
            //at?.format='dd-MMM-YYYY'
            String format=at.dateh?.format(DateTimeFormatter.ofPattern(at?.format))
            if(at?.showTime){
                Calendar cl=Calendar.getInstance();cl.setTime(at?.date);
                format=format+' '+cl.get(Calendar.HOUR)+':'+cl.get(Calendar.MINUTE)
            }
            out << format

        }else{

           out << g.formatDate(at)
        }

    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-23
    • 2017-09-29
    • 1970-01-01
    • 2015-04-06
    • 1970-01-01
    • 2016-04-27
    • 2019-10-07
    相关资源
    最近更新 更多