/* * Encog(tm) Core v3.4 - Java Version * http://www.heatonresearch.com/encog/ * https://github.com/encog/encog-java-core * Copyright 2008-2016 Heaton Research, Inc. * * 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. * * For more information on Heaton Research copyrights, licenses * and trademarks visit: * http://www.heatonresearch.com/copyright */ package org.encog.util.time; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; public class NumericDateUtil { public static final int YEAR_OFFSET = 10000; public static final int MONTH_OFFSET = 100; public static final int HOUR_OFFSET = 10000; public static final int MINUTE_OFFSET = 100; public static long date2Long(Date time) { GregorianCalendar gc = new GregorianCalendar(); gc.setTime(time); int month = gc.get(Calendar.MONTH)+1; int day = gc.get(Calendar.DAY_OF_MONTH); int year = gc.get(Calendar.YEAR); return (long)(day + (month * MONTH_OFFSET) + (year * YEAR_OFFSET)); } public static Date long2Date(long l) { long rest = (long)l; int year = (int)(rest / YEAR_OFFSET); rest-=year*YEAR_OFFSET; int month = (int)(rest / MONTH_OFFSET); rest -= month * MONTH_OFFSET; int day = (int)rest; GregorianCalendar gc = new GregorianCalendar(year, month, day); return gc.getTime(); } public static Date stripTime(Date time) { GregorianCalendar gc = new GregorianCalendar(); gc.setTime(time); int month = gc.get(Calendar.MONTH)+1; int day = gc.get(Calendar.DAY_OF_MONTH); int year = gc.get(Calendar.YEAR); GregorianCalendar gc2 = new GregorianCalendar(year,month,day); return gc2.getTime(); } public static boolean haveSameDate(Date d1, Date d2) { GregorianCalendar gc1 = new GregorianCalendar(); gc1.setTime(d1); GregorianCalendar gc2 = new GregorianCalendar(); gc2.setTime(d2); return ((gc1.get(Calendar.DAY_OF_MONTH) == gc2.get(Calendar.DAY_OF_MONTH)) && (gc1.get(Calendar.DAY_OF_MONTH) == gc2.get(Calendar.DAY_OF_MONTH)) && (gc1.get(Calendar.YEAR) == gc2.get(Calendar.YEAR))); } public static Date int2Time(Date date, int i) { int rest = i; int hour = (int)(rest / HOUR_OFFSET); rest -= (hour * HOUR_OFFSET); int minute = (int)(rest / MONTH_OFFSET); rest -= (minute * MINUTE_OFFSET); int second = (int)rest; GregorianCalendar gc = new GregorianCalendar(); gc.setTime(date); int month = gc.get(Calendar.MONTH)+1; int day = gc.get(Calendar.DAY_OF_MONTH); int year = gc.get(Calendar.YEAR); return new GregorianCalendar(year, month, day, hour, minute, second).getTime(); } public static int time2Int(Date time) { GregorianCalendar gc = new GregorianCalendar(); gc.setTime(time); int hour = gc.get(Calendar.HOUR); int minute = gc.get(Calendar.MINUTE); int second = gc.get(Calendar.SECOND); return (int)(second + (minute * MINUTE_OFFSET) + (hour * HOUR_OFFSET)); } public static int getYear(long date) { return (int) (date / YEAR_OFFSET); } public static int getMonth(long l) { long rest = (long)l; int year = (int)(rest / YEAR_OFFSET); rest -= year * YEAR_OFFSET; return (int)(rest / MONTH_OFFSET); } public static int getMinutePeriod(int time, int period) { int rest = time; int hour = (int)(rest / HOUR_OFFSET); rest -= (hour * HOUR_OFFSET); int minute = (int)(rest / MONTH_OFFSET); int minutes = minute + (hour * 60); return minutes / period; } public static long combine(long date, int time) { return (date * 1000000) + time; } public static int GetDayOfWeek(long p) { Date t = long2Date(p); GregorianCalendar gc = new GregorianCalendar(); gc.setTime(t); switch (gc.get(Calendar.DAY_OF_WEEK)) { case Calendar.SUNDAY: return 0; case Calendar.MONDAY: return 1; case Calendar.TUESDAY: return 2; case Calendar.WEDNESDAY: return 3; case Calendar.THURSDAY: return 4; case Calendar.FRIDAY: return 5; case Calendar.SATURDAY: return 6; default: // no way this should happen! return -1; } } }