首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >g:formatDate grails不适用于java.time.chrono.HijrahDate实例

g:formatDate grails不适用于java.time.chrono.HijrahDate实例
EN

Stack Overflow用户
提问于 2014-11-25 07:52:36
回答 1查看 430关注 0票数 0
代码语言:javascript
复制
 HijrahChronology.INSTANCE.date(LocalDate.of(year, month, day));

此代码用于使用UmalQuraCalendar API of JAVA8将日期转换为Hijrah。

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

代码语言:javascript
复制
Class
java.lang.IllegalArgumentException
Message
Unknown class: org.codehaus.groovy.grails.web.util.StreamCharBuffer

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

EN

回答 1

Stack Overflow用户

发布于 2014-11-25 09:02:04

解决了!

用例:

代码语言:javascript
复制
  <abdennour:formatDate showTime="true" date="${new Date()}" type="hijri"/>

另一个

代码语言:javascript
复制
   <abdennour:formatDate showTime="true" date="${new Date()}" format="dd/MMM/YYYY" type="hijri"/>

备注:

  • type属性不存在,这意味着您隐式地使用g:formatDate
  • 如果type="hijri"format只包含ddMMM或/和YYYY,如果要显示时间,则添加showTime属性。

API接口

服务:

代码语言:javascript
复制
 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));
        }

}

塔格利卜:

代码语言:javascript
复制
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)
        }

    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27121299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档