EMMA Coverage Report (generated Fri Feb 14 08:28:31 UTC 2014)
[all classes][org.qedeq.base.utility]

COVERAGE SUMMARY FOR SOURCE FILE [DateUtility.java]

nameclass, %method, %block, %line, %
DateUtility.java100% (1/1)55%  (6/11)89%  (200/225)85%  (47/55)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class DateUtility100% (1/1)55%  (6/11)89%  (200/225)85%  (47/55)
DateUtility (): void 0%   (0/1)0%   (0/3)0%   (0/2)
getDate (long): Date 0%   (0/1)0%   (0/8)0%   (0/3)
getIsoTime (long): String 0%   (0/1)0%   (0/5)0%   (0/1)
getIsoTimestamp (Date): String 0%   (0/1)0%   (0/4)0%   (0/1)
getIsoTimestamp (long): String 0%   (0/1)0%   (0/5)0%   (0/1)
<static initializer> 100% (1/1)100% (13/13)100% (4/4)
getCurrentGmtDate (): Date 100% (1/1)100% (46/46)100% (9/9)
getDuration (long): String 100% (1/1)100% (125/125)100% (31/31)
getGmtTimestamp (): String 100% (1/1)100% (4/4)100% (1/1)
getIsoTimestamp (): String 100% (1/1)100% (6/6)100% (1/1)
getTimestamp (): String 100% (1/1)100% (6/6)100% (1/1)

1/* This file is part of the project "Hilbert II" - http://www.qedeq.org
2 *
3 * Copyright 2000-2014,  Michael Meyling <mime@qedeq.org>.
4 *
5 * "Hilbert II" is free software; you can redistribute
6 * it and/or modify it under the terms of the GNU General Public
7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 */
15 
16package org.qedeq.base.utility;
17 
18import java.util.Calendar;
19import java.util.Date;
20import java.util.GregorianCalendar;
21import java.util.TimeZone;
22 
23import org.apache.commons.lang.time.FastDateFormat;
24 
25/**
26 * Various methods for date and time handling.
27 *
28 * @author Michael Meyling
29 */
30public final class DateUtility {
31 
32    /** ISO 8601 date and time format. */
33    public static final FastDateFormat ISO_8601_TIMESTAMP_FORMATTER = FastDateFormat.getInstance(
34        "yyyy-MM-dd'T'HH:mm:ss.SSS");
35 
36    /** ISO 8601 time format. */
37    public static final FastDateFormat ISO_8601_TIME_FORMATTER = FastDateFormat.getInstance(
38        "HH:mm:ss.SSS");
39 
40    /** Date format YYYYMMDD HHmm. */
41    public static final FastDateFormat NICE_TIMESTAMP_FORMATTER = FastDateFormat.getInstance(
42        "yyyy-MM-dd' 'HH:mm:ss.SSS");
43 
44    /** GMT timezone. */
45    private static final TimeZone GMT = TimeZone.getTimeZone("GMT");
46 
47    /**
48     * Hidden constructor.
49     */
50    private DateUtility() {
51        // nothing to do
52    }
53 
54    /**
55     * Current timestamp in ISO 8601 format (date and time).
56     *
57     * @return  Current timestamp.
58     */
59    public static final String getIsoTimestamp() {
60        return ISO_8601_TIMESTAMP_FORMATTER.format(new Date());
61    }
62 
63    /**
64     * Timestamp in ISO 8601 format (date and time).
65     *
66     * @param   date    Date to format.
67     * @return  Timestamp.
68     */
69    public static final String getIsoTimestamp(final Date date) {
70        return ISO_8601_TIMESTAMP_FORMATTER.format(date);
71    }
72 
73    /**
74     * Timestamp in ISO 8601 format (date and time).
75     *
76     * @param   millis  Time in UTC milliseconds from the epoch.
77     * @return  Timestamp.
78     */
79    public static final String getIsoTimestamp(final long millis) {
80        return ISO_8601_TIMESTAMP_FORMATTER.format(getDate(millis));
81    }
82 
83    /**
84     * Times in ISO 8601 format (time).
85     *
86     * @param   millis  Time in UTC milliseconds from the epoch.
87     * @return  Times.
88     */
89    public static final String getIsoTime(final long millis) {
90        return ISO_8601_TIME_FORMATTER.format(getDate(millis));
91    }
92 
93    /**
94     * Current timestamp as ISO 8601 date and time separated by space.
95     *
96     * @return  Current timestamp.
97     */
98    public static final String getTimestamp() {
99        return NICE_TIMESTAMP_FORMATTER.format(new Date());
100    }
101 
102    /**
103     * Current GMT timestamp as ISO 8601 date and time separated by space.
104     *
105     * @return  Current GMT timestamp.
106     */
107    public static final String getGmtTimestamp() {
108        return NICE_TIMESTAMP_FORMATTER.format(getCurrentGmtDate());
109    }
110 
111    /**
112     * Returns a current GMT date.
113     *
114     * @return  Current GMT date.
115     */
116    public static final Date getCurrentGmtDate() {
117        final Calendar cal = Calendar.getInstance(GMT);
118        final Calendar gmtDate = new GregorianCalendar();
119        gmtDate.set(Calendar.MONTH, cal.get(Calendar.MONTH));
120        gmtDate.set(Calendar.YEAR, cal.get(Calendar.YEAR));
121        gmtDate.set(Calendar.DAY_OF_MONTH, cal.get(Calendar.DAY_OF_MONTH));
122        gmtDate.set(Calendar.HOUR_OF_DAY, cal.get(Calendar.HOUR_OF_DAY));
123        gmtDate.set(Calendar.MINUTE, cal.get(Calendar.MINUTE));
124        gmtDate.set(Calendar.SECOND, cal.get(Calendar.SECOND));
125        return gmtDate.getTime();
126    }
127 
128    /**
129     * Convert millisecond duration into readable time amount.
130     *
131     * @param   milliseconds    Duration in milliseconds.
132     * @return  Time in format "[d day[s] ]HH:mm:ss.SSS".
133     */
134    public static final String getDuration(final long milliseconds) {
135        final StringBuffer buffer = new StringBuffer();
136        long factor = 1000 * 60 * 60 * 24;
137        long rest = milliseconds;
138        long mod = 0;
139 
140        // days
141        mod = rest / factor;
142        rest = rest % factor;
143        if (mod > 0) {
144            buffer.append(mod);
145            buffer.append(" day");
146            if (mod > 1) {
147                buffer.append("s");
148            }
149            buffer.append(" ");
150        }
151 
152        // hours
153        factor = factor / 24;
154        mod = rest / factor;
155        rest = rest % factor;
156        buffer.append(StringUtility.format(mod, 2));
157 
158        buffer.append(":");
159 
160        // minutes
161        factor = factor / 60;
162        mod = rest / factor;
163        rest = rest % factor;
164        buffer.append(StringUtility.format(mod, 2));
165 
166        buffer.append(":");
167 
168        // seconds
169        factor = factor / 60;
170        mod = rest / factor;
171        rest = rest % factor;
172        buffer.append(StringUtility.format(mod, 2));
173 
174        buffer.append(".");
175 
176        // milliseconds
177        factor = factor / 1000;
178        mod = rest / factor;
179        // rest = rest % factor;
180        buffer.append(StringUtility.format(mod, 3));
181 
182        return buffer.toString();
183    }
184 
185    /**
186     * Transform milliseconds from the epoch into date.
187     *
188     * @param   millis  Time in UTC milliseconds from the epoch.
189     * @return  Date.
190     */
191    public static final Date getDate(final long millis) {
192        final Calendar calendar = Calendar.getInstance();
193        calendar.setTimeInMillis(millis);
194        return calendar.getTime();
195    }
196 
197}

[all classes][org.qedeq.base.utility]
EMMA 2.1.5320 (stable) (C) Vladimir Roubtsov