package net.redhogs.cronparser;
import org.apache.commons.lang3.StringUtils;
import org.joda.time.DateTime;
import java.text.MessageFormat;
import java.util.Locale;
/**
* @author grhodes
* @since 10 Dec 2012 14:18:58
*/
public final class DateAndTimeUtils {
private DateAndTimeUtils() {
}
/**
* @param hoursExpression
* @param minutesExpression
* @return
*/
public static String formatTime(String hoursExpression, String minutesExpression) {
return formatTime(hoursExpression, minutesExpression, "");
}
/**
* @param hoursExpression
* @param minutesExpression
* @param secondsExpression
* @return
*/
public static String formatTime(String hoursExpression, String minutesExpression, String secondsExpression) {
int hour = Integer.parseInt(hoursExpression);
String amPM = hour >= 12 ? "PM" : "AM";
if (hour > 12) {
hour -= 12;
}
String minute = String.valueOf(Integer.parseInt(minutesExpression));
String second = "";
if (!StringUtils.isEmpty(secondsExpression)) {
second = ":" + StringUtils.leftPad(String.valueOf(Integer.parseInt(secondsExpression)), 2, '0');
}
return MessageFormat.format("{0}:{1}{2} {3}", String.valueOf(hour), StringUtils.leftPad(minute, 2, '0'), second, amPM);
}
public static String getDayOfWeekName(int dayOfWeek) {
return new DateTime().withDayOfWeek(dayOfWeek).dayOfWeek().getAsText(Locale.ENGLISH);
}
/**
* @param minutesExpression
* @return
* @since https://github.com/RedHogs/cron-parser/issues/2
*/
public static String formatMinutes(String minutesExpression) {
if (StringUtils.contains(minutesExpression, ",")) {
StringBuffer formattedExpression = new StringBuffer();
for (String minute : StringUtils.split(minutesExpression, ',')) {
formattedExpression.append(StringUtils.leftPad(minute, 2, '0'));
formattedExpression.append(",");
}
return formattedExpression.toString();
}
return StringUtils.leftPad(minutesExpression, 2, '0');
}
}