In this tutorial, we will learn how to convert Java Date to pretty time like moments ago, 1 hour ago, 1 week ago, 1 month ago, 1 year ago, and so on in grails application.
For this, we are using the prettytime plugin in our project.
Load PrettyTime in Grails Gradle project:
Add the following inside dependencies in the build.gradle file.
dependencies {
//other dependencies
compile 'org.grails.plugins:grails-pretty-time:4.0.0'
}
PrettyTime format Date:
Now let's create a method that formats the Java Date
import org.ocpsoft.prettytime.PrettyTime
import java.util.Date
public static String formatPrettyTime(Date date) {
PrettyTime p = new PrettyTime()
return p.format(date).trim()
}
This will format the given date to a pretty time like moments ago.
Pretty Time Support Locale:
Prettytime supports different languages, for this use request to get the current locale and format it.
public static String formatPrettyTime(Date date, request) {
Locale locale = RequestContextUtils.getLocale(request)
PrettyTime prettyTime = new PrettyTime(locale)
return prettyTime.format(date).trim()
}
Here, we are using the locale from the request which gives the session locale for the current user
Current locale in grails application can also be achieved using LocaleContextHolder
import org.springframework.context.i18n.LocaleContextHolder
Locale locale = LocaleContextHolder.getLocale()
For pretty time supported language please follow prettyTime
Use in Gsp page:
If we are using the GSP pages HTML as server-side rendering, then we can use pretty time in GSP pages as below
<prettytime:display date="${someDate}" />