/**
* Copyright 2011 Intuit Inc. All Rights Reserved
*/
package com.intuit.tank.util;
/*
* #%L
* Common
* %%
* Copyright (C) 2011 - 2015 Intuit Inc.
* %%
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
* #L%
*/
import java.text.NumberFormat;
import java.util.Calendar;
import java.util.TimeZone;
import javax.annotation.Nonnull;
import org.apache.commons.lang3.time.FastDateFormat;
/**
* TimeUtil
*
* @author dangleton
*
*/
public final class TimeFormatUtil {
private static final int TIME_60 = 60;
private static final int TIME_3600 = 3600;
private static final FastDateFormat DF = FastDateFormat.getInstance("HH:mm:ss", TimeZone.getTimeZone("GMT"));
private static NumberFormat nf;
static {
nf = NumberFormat.getInstance();
nf.setMinimumIntegerDigits(2);
nf.setMaximumIntegerDigits(2);
}
/**
* private no arg constructor to implement util lpattern
*/
private TimeFormatUtil() {
// private
}
public static String formatTime(int numSeconds) {
Calendar c = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
c.setTimeInMillis(0);
c.add(Calendar.SECOND, numSeconds);
return DF.format(c);
}
/**
* @return the simulation time in the following format hh:mm:ss
*/
public static String getFormattedDuration(int simTimeSeconds) {
int hours = simTimeSeconds / TIME_3600;
simTimeSeconds = simTimeSeconds - (hours * TIME_3600);
int minutes = simTimeSeconds / TIME_60;
simTimeSeconds = simTimeSeconds - (minutes * TIME_60);
int seconds = simTimeSeconds;
return nf.format(hours) + ":" + nf.format(minutes) + ":" + nf.format(seconds);
}
/**
* Sets the simulation time for the job
*
* @param formattedTime
* the simulation time is in the format hh:mm:ss
*/
public static int parseFormattedDuration(@Nonnull String formattedTime) throws NumberFormatException {
String[] times = formattedTime.split(":");
int time = 0;
if (times.length > 0) {
time += Integer.parseInt(times[0]) * TIME_3600;
}
if (times.length > 1) {
time += Integer.parseInt(times[1]) * TIME_60;
}
if (times.length > 2) {
time += Integer.parseInt(times[2]);
}
return time;
}
}