Java - класс со статическими функциями по работе с датой
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

262 lines
7.7 KiB

package com.gmail.develop.jcant;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.concurrent.TimeUnit;
public class JDate {
private static String defaultDateFormat = "dd-MM-yyyy";
private static String defaultTimeFormat = "HH:mm:ss";
public static void setDefaultDateFormat(String format) {
defaultDateFormat = format;
}
public static String getDefaultDateFormat() {
return defaultDateFormat;
}
public static void setDefaultTimeFormat(String format) {
defaultTimeFormat = format;
}
public static String getDefaultTimeFormat() {
return defaultTimeFormat;
}
/* --- Date operations --- */
public static Date getDate(String date) {
SimpleDateFormat sdf = new SimpleDateFormat(defaultDateFormat);
Date result = null;
try {
result = sdf.parse(date);
} catch (ParseException e) {
System.err.println("Error getting quick date!");
}
return result;
}
public static Date getDate(String date, String time){
return setTime(getDate(date), time);
}
public static String getDate(Date date) {
SimpleDateFormat sdf = new SimpleDateFormat(defaultDateFormat);
String result = sdf.format(date);
return result;
}
public static Date setDate(Date date, String set){
if (date == null) {
throw new IllegalArgumentException();
}
Calendar our = Calendar.getInstance();
Calendar setter = Calendar.getInstance();
our.setTime(date);
SimpleDateFormat sdf = new SimpleDateFormat(defaultDateFormat);
try {
setter.setTime(sdf.parse(set));
} catch (ParseException e) {
e.printStackTrace();
}
our.set(setter.get(Calendar.YEAR), setter.get(Calendar.MONTH), setter.get(Calendar.DAY_OF_MONTH));
return our.getTime();
}
public static Date setDate(Date date, int day, int month, int year){
if ((date == null)||
(day > 31)||(day < 1)||
(month > 12)||(month < 1)) {
throw new IllegalArgumentException();
}
Calendar our = Calendar.getInstance();
our.setTime(date);
our.set(Calendar.DAY_OF_MONTH, day);
our.set(Calendar.MONTH, month);
our.set(Calendar.YEAR, year);
return our.getTime();
}
/* --- Time operations --- */
public static String getTime(Date date) {
SimpleDateFormat sdf = new SimpleDateFormat(defaultTimeFormat);
String result = sdf.format(date);
return result;
}
public static Date setTime(Date date, String set){
if (date == null) {
throw new IllegalArgumentException();
}
Calendar our = Calendar.getInstance();
Calendar setter = Calendar.getInstance();
our.setTime(date);
SimpleDateFormat sdf = new SimpleDateFormat(defaultTimeFormat);
try {
setter.setTime(sdf.parse(set));
} catch (ParseException e) {
e.printStackTrace();
}
our.set(Calendar.HOUR_OF_DAY, setter.get(Calendar.HOUR_OF_DAY));
our.set(Calendar.MINUTE, setter.get(Calendar.MINUTE));
our.set(Calendar.SECOND, 0);
return our.getTime();
}
public static Date setTime(Date date, int hours, int minutes, int seconds){
if ((date == null)||
(hours > 23)||(hours < 0)||
(minutes > 59)||(minutes < 0)||
(seconds > 59)||(seconds < 0)) {
throw new IllegalArgumentException();
}
Calendar our = Calendar.getInstance();
our.setTime(date);
our.set(Calendar.HOUR_OF_DAY, hours);
our.set(Calendar.MINUTE, minutes);
our.set(Calendar.SECOND, seconds);
return our.getTime();
}
public static Date nullTime(Date date){
if (date == null) {
throw new IllegalArgumentException();
}
Calendar our = Calendar.getInstance();
our.setTime(date);
our.set(Calendar.HOUR_OF_DAY, 0);
our.set(Calendar.MINUTE, 0);
our.set(Calendar.SECOND, 0);
our.set(Calendar.MILLISECOND, 0);
return our.getTime();
}
public static int getHours(Date date) {
Calendar day = Calendar.getInstance();
day.setTime(date);
return day.get(Calendar.HOUR_OF_DAY);
}
public static int getMinutes(Date date) {
Calendar day = Calendar.getInstance();
day.setTime(date);
return day.get(Calendar.MINUTE);
}
public static int getSeconds(Date date) {
Calendar day = Calendar.getInstance();
day.setTime(date);
return day.get(Calendar.SECOND);
}
public static Date incHours(Date date, int hours) {
Calendar day = Calendar.getInstance();
day.setTime(date);
day.add(Calendar.HOUR_OF_DAY, hours);
return day.getTime();
}
public static Date incMinutes(Date date, int minutes) {
Calendar day = Calendar.getInstance();
day.setTime(date);
day.add(Calendar.MINUTE, minutes);
return day.getTime();
}
public static Date incSeconds(Date date, int seconds) {
Calendar day = Calendar.getInstance();
day.setTime(date);
day.add(Calendar.SECOND, seconds);
return day.getTime();
}
/* --- Compare operations --- */
public static long getDifferenceDays(Date from, Date to) {
long msDiff = to.getTime() - from.getTime();
long diff = TimeUnit.DAYS.convert(msDiff, TimeUnit.MILLISECONDS);
return diff;
}
public static int getDifferenceYears(Date from, Date to) {
Calendar dayFrom = Calendar.getInstance();
dayFrom.setTime(from);
Calendar dayTo = Calendar.getInstance();
dayTo.setTime(to);
int diff = dayTo.get(Calendar.YEAR) - dayFrom.get(Calendar.YEAR);
dayTo.set(Calendar.YEAR, dayFrom.get(Calendar.YEAR));
if (dayFrom.compareTo(dayTo) >= 0) {
diff--;
}
return diff;
}
/* --- Date operations with parts--- */
// 1 - Moday, 2 - Tuesday, ... 7 - Sunday
public static int getWeekDay(Date date) {
Calendar day = Calendar.getInstance();
day.setTime(date);
return day.get(Calendar.DAY_OF_WEEK);
}
public static int getDay(Date date) {
Calendar day = Calendar.getInstance();
day.setTime(date);
return day.get(Calendar.DAY_OF_MONTH);
}
// 0-January, 1-February, ... 11-December
public static int getMonth(Date date) {
Calendar day = Calendar.getInstance();
day.setTime(date);
return day.get(Calendar.MONTH);
}
// human-like month numeration
public static int getCorrectMonth(Date date) {
return getMonth(date) + 1;
}
public static int getYear(Date date) {
Calendar day = Calendar.getInstance();
day.setTime(date);
return day.get(Calendar.YEAR);
}
public static Date incDay(Date date, int days) {
Calendar day = Calendar.getInstance();
day.setTime(date);
day.add(Calendar.DAY_OF_MONTH, days);
return day.getTime();
}
public static Date incMonth(Date date, int months) {
Calendar day = Calendar.getInstance();
day.setTime(date);
day.add(Calendar.MONTH, months);
return day.getTime();
}
public static Date incYear(Date date, int years) {
Calendar day = Calendar.getInstance();
day.setTime(date);
day.add(Calendar.YEAR, years);
return day.getTime();
}
//this is comment
}