com.liferay.portal.kernel.util.Time Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of com.liferay.portal.kernel Show documentation
Show all versions of com.liferay.portal.kernel Show documentation
Contains interfaces for the portal services. Interfaces are only loaded by the global class loader and are shared by all plugins.
/**
* Copyright (c) 2000-present Liferay, Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*/
package com.liferay.portal.kernel.util;
import com.liferay.portal.kernel.language.LanguageUtil;
import java.text.Format;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;
/**
* @author Brian Wing Shun Chan
*/
public class Time {
public static final long DAY = Time.HOUR * 24;
public static final String DURATION_FORMAT = "HH:mm:ss.SSS";
public static final long HOUR = Time.MINUTE * 60;
public static final long MINUTE = Time.SECOND * 60;
public static final long MONTH = Time.DAY * 30;
public static final String RFC822_FORMAT = "EEE, dd MMM yyyy HH:mm:ss Z";
public static final long SECOND = 1000;
public static final String SHORT_TIMESTAMP_FORMAT = "yyyyMMddkkmm";
public static final String TIMESTAMP_FORMAT = "yyyyMMddkkmmssSSS";
public static final long WEEK = Time.DAY * 7;
public static final long YEAR = Time.DAY * 365;
public static Date getDate(Calendar cal) {
Calendar adjustedCal = CalendarFactoryUtil.getCalendar();
adjustedCal.set(Calendar.YEAR, cal.get(Calendar.YEAR));
adjustedCal.set(Calendar.MONTH, cal.get(Calendar.MONTH));
adjustedCal.set(Calendar.DATE, cal.get(Calendar.DATE));
adjustedCal.set(Calendar.HOUR_OF_DAY, cal.get(Calendar.HOUR_OF_DAY));
adjustedCal.set(Calendar.MINUTE, cal.get(Calendar.MINUTE));
adjustedCal.set(Calendar.SECOND, cal.get(Calendar.SECOND));
adjustedCal.set(Calendar.MILLISECOND, cal.get(Calendar.MILLISECOND));
return adjustedCal.getTime();
}
public static Date getDate(Date date, TimeZone tz) {
Calendar cal = CalendarFactoryUtil.getCalendar(tz);
cal.setTime(date);
return getDate(cal);
}
public static Date getDate(TimeZone tz) {
Calendar cal = CalendarFactoryUtil.getCalendar(tz);
return getDate(cal);
}
public static String getDescription(long milliseconds) {
return getDescription(milliseconds, false);
}
public static String getDescription(
long milliseconds, boolean approximate) {
String s = StringPool.BLANK;
int x = 0;
if (approximate) {
if (milliseconds <= 0) {
s = "0 Seconds";
}
else if (milliseconds < MINUTE) {
x = (int)(milliseconds / SECOND);
s = x + " Second";
}
else if (milliseconds < HOUR) {
x = (int)(milliseconds / MINUTE);
s = x + " Minute";
}
else if (milliseconds < DAY) {
x = (int)(milliseconds / HOUR);
s = x + " Hour";
}
else if (milliseconds < MONTH) {
x = (int)(milliseconds / DAY);
s = x + " Day";
}
else if (milliseconds < YEAR) {
x = (int)(milliseconds / MONTH);
s = x + " Month";
}
else if (milliseconds >= YEAR) {
x = (int)(milliseconds / YEAR);
s = x + " Year";
}
}
else {
if ((milliseconds % WEEK) == 0) {
x = (int)(milliseconds / WEEK);
s = x + " Week";
}
else if ((milliseconds % DAY) == 0) {
x = (int)(milliseconds / DAY);
s = x + " Day";
}
else if ((milliseconds % HOUR) == 0) {
x = (int)(milliseconds / HOUR);
s = x + " Hour";
}
else if ((milliseconds % MINUTE) == 0) {
x = (int)(milliseconds / MINUTE);
s = x + " Minute";
}
else if ((milliseconds % SECOND) == 0) {
x = (int)(milliseconds / SECOND);
s = x + " Second";
}
else {
x = (int)milliseconds;
s = x + " Millisecond";
}
}
if ((x == 0) || (x > 1)) {
s += "s";
}
return s;
}
public static String getDuration(long milliseconds) {
return getSimpleDate(new Date(milliseconds), DURATION_FORMAT);
}
public static String getRelativeTimeDescription(
Date date, Locale locale, TimeZone timeZone) {
return getRelativeTimeDescription(date.getTime(), locale, timeZone);
}
public static String getRelativeTimeDescription(
Date date, Locale locale, TimeZone timeZone, Format dateTimeFormat) {
return getRelativeTimeDescription(
date.getTime(), locale, timeZone, dateTimeFormat);
}
public static String getRelativeTimeDescription(
long milliseconds, Locale locale, TimeZone timeZone) {
return getRelativeTimeDescription(milliseconds, locale, timeZone, null);
}
public static String getRelativeTimeDescription(
long milliseconds, Locale locale, TimeZone timeZone,
Format dateTimeFormat) {
Format timeFormat = FastDateFormatFactoryUtil.getTime(locale, timeZone);
int daysBetween = DateUtil.getDaysBetween(
new Date(milliseconds), new Date(), timeZone);
long millisAgo = System.currentTimeMillis() - milliseconds;
if (millisAgo < Time.HOUR) {
long minutes = millisAgo / Time.MINUTE;
if (minutes <= 1) {
return LanguageUtil.get(locale, "about-a-minute-ago");
}
return LanguageUtil.format(locale, "x-minutes-ago", minutes, false);
}
else if ((millisAgo / Time.HOUR) == 1) {
return LanguageUtil.get(locale, "about-an-hour-ago");
}
else if ((millisAgo < Time.DAY) || (daysBetween == 0)) {
return LanguageUtil.format(
locale, "x-hours-ago", (millisAgo / Time.HOUR), false);
}
else if (daysBetween == 1) {
return LanguageUtil.format(
locale, "yesterday-at-x", timeFormat.format(milliseconds),
false);
}
if (dateTimeFormat == null) {
dateTimeFormat = FastDateFormatFactoryUtil.getSimpleDateFormat(
"EEEE, MMMMM dd, yyyy", locale, timeZone);
}
return dateTimeFormat.format(milliseconds);
}
public static String getRFC822() {
return getRFC822(new Date());
}
public static String getRFC822(Date date) {
return getSimpleDate(date, RFC822_FORMAT);
}
public static String getShortTimestamp() {
return getShortTimestamp(new Date());
}
public static String getShortTimestamp(Date date) {
return getSimpleDate(date, SHORT_TIMESTAMP_FORMAT);
}
public static String getSimpleDate(Date date, String format) {
String s = StringPool.BLANK;
if (date != null) {
Format dateFormat = FastDateFormatFactoryUtil.getSimpleDateFormat(
format);
s = dateFormat.format(date);
}
return s;
}
public static String getTimestamp() {
return getTimestamp(new Date());
}
public static String getTimestamp(Date date) {
return getSimpleDate(date, TIMESTAMP_FORMAT);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy