Java tutorial
/** * Copyright (c) 2006 Richard Rodgers * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ //package com.monad.homerun.util; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; /** * TimeUtil is a utility class with static methods to convert times in various * formats into other formats */ public class TimeUtil { private static final int MINS_PER_DAY = 60 * 24; private static final long MS_PER_DAY = 1000 * 60 * MINS_PER_DAY; private static final int SEC = 1000; private static final int MIN = SEC * 60; private static final int HOUR = MIN * 60; private static final int DAY = HOUR * 24; private static final long WEEK = DAY * 7; private static final long YEAR = WEEK * 52; private static final long[] buckets = { YEAR, WEEK, DAY, HOUR, MIN, SEC }; private static final String[] bucketNames = { "year", "week", "day", "hour", "minute", "second" }; private static GregorianCalendar statFmtCal = new GregorianCalendar(); private static final String ts24Pat = "H:mm:ss yy-MM-dd"; // convert date in minute of the week format into millisecond format public static long dateFormat(short weekMins) { long dateMillis = System.currentTimeMillis(); synchronized (statFmtCal) { statFmtCal.setTime(new Date(dateMillis)); // get the day of the week int nowDay = statFmtCal.get(Calendar.DAY_OF_WEEK) - 1; // get day of the week of stat time int statDay = weekMins / 1440; if (nowDay > statDay) { dateMillis -= (nowDay - statDay) * 1440 * 60 * 1000; } else if (nowDay < statDay) { dateMillis += (statDay - nowDay) * 1440 * 60 * 1000; } // now get the hour of the day int nowHour = statFmtCal.get(Calendar.HOUR_OF_DAY); int statHour = (weekMins % 1440) / 60; if (nowHour > statHour) { dateMillis -= (nowHour - statHour) * 60 * 60 * 1000; } else if (nowHour < statHour) { dateMillis += (statHour - nowHour) * 60 * 60 * 1000; } // finally minutes int nowMins = statFmtCal.get(Calendar.MINUTE); int statMins = (weekMins % 1440) % 60; if (nowMins > statMins) { dateMillis -= (nowMins - statMins) * 60 * 1000; } else if (nowMins < statMins) { dateMillis += (statMins - nowMins) * 60 * 1000; } } return dateMillis; } }