All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.netflix.infix.TimeUtil Maven / Gradle / Ivy

The newest version!
package com.netflix.infix;

import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;

public class TimeUtil {

	/**
	 * Converts the given time format string to a {@link org.joda.time.format.DateTimeFormatter} instance.
	 *
	 * @param formatName A name used to identify the given time format. This is mainly used for error reporting.
	 * @param timeFormat The date time format to be converted.
	 *
	 * @return A {@link org.joda.time.format.DateTimeFormatter} instance of the given time format.
	 *
	 * @throws IllegalArgumentException if the given time format is invalid.
	 */
	public static DateTimeFormatter toDateTimeFormatter(String formatName, String timeFormat) {
        DateTimeFormatter formatter = null;
    	try{
    		formatter = DateTimeFormat.forPattern(timeFormat);
    	}catch(IllegalArgumentException e){
    		//JODA's error message doesn't tell you which value sucked, so we create a better
    		// error message here.
    		IllegalArgumentException iae = new IllegalArgumentException(
    			String.format("Invalid time format for the property %s: '%s'",
    				formatName,
    				timeFormat),
    			e.getCause());
    		iae.setStackTrace(e.getStackTrace());

    		throw iae;
    	}
        return formatter;
    }

	/**
	 * Converts the given epoch time in millisecond to a string according to the given format. Note
	 * each invocation creates a new {@link org.joda.time.format.DateTimeFormatter} instance, which is pretty costly.
	 * This method is suitable for testing and calls that are not on hot path. 
	 * 
	 * @param millis the epoch time to be converted
	 * @param format The format the returned time string
	 * @return A string representation of the given epoch time in the given format
	 */
	public static String toString(long millis, String format){
		return DateTimeFormat.forPattern(format).print(millis);
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy