TimeFormatUtil.java Source code

Java tutorial

Introduction

Here is the source code for TimeFormatUtil.java

Source

//package com.myapp.util.format;

import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class TimeFormatUtil {
    private static final Format TIME_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");

    public static String getDateLabel(long date) {
        return TIME_FORMAT.format(new Date(date));
    }

    public static String getDateLabel(Date date) {
        return TIME_FORMAT.format(date);
    }

    /**
     * @param seconds
     * @return a string which represents a floating point number with max. 2
     *         decimals
     */
    public static String formatTimeTo2Digits(double seconds) {
        String timeString = Double.toString(seconds);

        int dotPos = timeString.indexOf(".");
        if (dotPos < 0)
            return timeString;

        Pattern p = Pattern.compile("([0-9]{1,})\\.([0-9]{1,})");
        Matcher m = p.matcher(timeString);
        if (!m.matches())
            throw new RuntimeException(
                    "WARNING: pattern '" + p.pattern() + "' " + "did not match input '" + timeString + "'");

        StringBuilder b = new StringBuilder(m.group(1));
        b.append('.');
        String afterCommaDigits = m.group(2);

        if (afterCommaDigits.length() > 2)
            b.append(m.group(2).substring(0, 2));
        else
            b.append(afterCommaDigits);

        return b.toString();
    }

    public static String getTimeLabel(long millis) {
        double seconds = Long.valueOf(millis).doubleValue() / 1000.0;
        return getTimeLabel(seconds);
    }

    public static String getTimeLabel(double seconds) {
        return getTimeLabel(seconds, true);
    }

    public static String getTimeLabel(double seconds, boolean longFormat) {
        int secs = new Double(Math.floor(seconds)).intValue();

        int hours = secs / 3600;
        secs = secs % 3600;

        int minutes = secs / 60;
        secs = secs % 60;

        StringBuilder b = new StringBuilder();

        if (hours > 0) {
            if (hours < 10)
                b.append(0);

            b.append(hours);
            b.append(longFormat ? "h " : ":");
        }

        if (minutes < 10)
            b.append(0);

        b.append(minutes);
        b.append(longFormat ? "m " : ":");

        if (secs < 10)
            b.append(0);

        b.append(secs);

        if (longFormat) {
            int hundreths = Double.valueOf((seconds - secs) * 100).intValue();
            b.append(".");
            b.append(hundreths);
            b.append("s");
        }

        return b.toString();
    }

}