Skip to content

Commit 40fc62b

Browse files
committed
changes on unix time
time zone added bug : current jalali date goes to (2 dey 2018)
1 parent 9fde09a commit 40fc62b

File tree

14 files changed

+333
-290
lines changed

14 files changed

+333
-290
lines changed

app/src/main/java/com/ali/universaldatetools/MainActivity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ protected void onCreate(Bundle savedInstanceState) {
2626
Button getTime = findViewById(R.id.btn_get_time);
2727
TextView timeView = findViewById(R.id.text_time_show);
2828

29-
a.ShowDatePicker(getSupportFragmentManager(), Calendar.Jalali);
29+
a.ShowDatePicker(getSupportFragmentManager(), Calendar.Hijri);
3030
a.setOnDateSelected((dateSystem, unixTime) -> {
3131
timeView.setText("unix time is: " + unixTime);
3232
timeView.append("\ndate is: " + dateSystem);

uneversaldatetools/src/main/java/com/ali/uneversaldatetools/date/DateConverter.java

Lines changed: 46 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -487,9 +487,9 @@ public static DateModel HijriToGregorian(int year, int month, int day) {
487487
return DaysToGregorian(HijriToDays(year, month, day) + 227014);
488488
}
489489

490+
//unix time
490491

491-
public static DateModel UnixToHijri(int sec, int timeZone) {
492-
sec += timeZone;
492+
public static DateModel UnixToHijri(int sec) {
493493
DateModel date = DaysToHijri((sec / 86400) + 719163 - 227014);
494494
date.sec = sec % 86400;
495495
date.hour = date.sec / 3600;
@@ -499,12 +499,7 @@ public static DateModel UnixToHijri(int sec, int timeZone) {
499499
return date;
500500
}
501501

502-
public static DateModel UnixToHijri(int sec) {
503-
return UnixToHijri(sec, 0);
504-
}
505-
506-
public static DateModel UnixToJalali(int sec, int timeZone) {
507-
sec += timeZone;
502+
public static DateModel UnixToJalali(int sec) {
508503
DateModel date = DaysToJalali((sec / 86400) + 719163 - 226895);
509504
date.sec = sec % 86400;
510505
date.hour = date.sec / 3600;
@@ -514,12 +509,7 @@ public static DateModel UnixToJalali(int sec, int timeZone) {
514509
return date;
515510
}
516511

517-
public static DateModel UnixToJalali(int sec) {
518-
return UnixToJalali(sec, 0);
519-
}
520-
521-
public static DateModel UnixToGregorian(int sec, int timeZone) {
522-
sec += timeZone;
512+
public static DateModel UnixToGregorian(int sec) {
523513
DateModel date = DaysToGregorian((sec / 86400) + 719163);
524514
date.sec = sec % 86400;
525515
date.hour = date.sec / 3600;
@@ -529,9 +519,48 @@ public static DateModel UnixToGregorian(int sec, int timeZone) {
529519
return date;
530520
}
531521

532-
public static DateModel UnixToGregorian(int sec) {
533-
return UnixToGregorian(sec, 0);
522+
523+
public static int HijriToUnix(int year, int month, int day, int hour, int min, int sec) {
524+
525+
int from = 719163; // const : DateConverter.GregorianToDays(1970, 1, 1)
526+
527+
from -= 227014; // hijri and gregorian deference in days
528+
529+
int days = HijriToDays(year, month, day);
530+
531+
int lastDays = ((days - from) * 86400);
532+
533+
int today = sec + (min * 60) + (hour * 3600);
534+
535+
return today + lastDays;
536+
537+
}
538+
539+
public static int JalaliToUnix(int year, int month, int day, int hour, int min, int sec) {
540+
541+
int from = 719163; // const : DateConverter.GregorianToDays(1970, 1, 1)
542+
543+
from -= 226895; // jalali and gregorian deference in days
544+
545+
int days = JalaliToDays(year, month, day);
546+
547+
int lastDays = ((days - from) * 86400);
548+
549+
int today = sec + (min * 60) + (hour * 3600);
550+
551+
return today + lastDays;
534552
}
535553

536-
//todo to unix methods
554+
public static int GregorianToUnix(int year, int month, int day, int hour, int min, int sec) {
555+
556+
int from = 719163; // const -> DateConverter.GregorianToDays(1970, 1, 1)
557+
558+
int days = GregorianToDays(year, month, day);
559+
560+
int lastDays = ((days - from) * 86400);
561+
562+
int today = sec + (min * 60) + (hour * 3600);
563+
564+
return today + lastDays;
565+
}
537566
}

uneversaldatetools/src/main/java/com/ali/uneversaldatetools/date/DateSystem.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,15 @@ public DateSystem(DateModel date, Calendar calendar) {
2828
if (date.month == 0) throw new IllegalArgumentException("month cant be 0");
2929
switch (Calendar) {
3030
case Jalali: {
31-
Date_SD = new JalaliDateTime(date);
31+
Date_SD = new JalaliDateTime(date.year, date.month, date.day, date.hour, date.min, date.sec, TimeZoneHelper.getSystemTimeZone());
3232
break;
3333
}
3434
case Gregorian: {
35-
Date_SD = new GregorianDateTime(date);
35+
Date_SD = new GregorianDateTime(date.year, date.month, date.day, date.hour, date.min, date.sec, TimeZoneHelper.getSystemTimeZone());
3636
break;
3737
}
3838
case Hijri: {
39-
Date_SD = new HijriDateTime(date);
39+
Date_SD = new HijriDateTime(date.year, date.month, date.day, date.hour, date.min, date.sec, TimeZoneHelper.getSystemTimeZone());
4040
break;
4141
}
4242
default: {
@@ -274,8 +274,7 @@ public int hashCode() {
274274
return (Calendar.getValue() * 397) ^ (Date_SD.hashCode());
275275
}
276276

277-
public long getUnixTime() {
278-
long from = DateConverter.GregorianToDays(1970, 1, 1);
279-
return (getGregorianDateTime().getDays() - from) * 86400;
277+
public int toUnixTime() {
278+
return Date_SD.toUnixTime();
280279
}
281280
}
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
package com.ali.uneversaldatetools.date;
2+
3+
/**
4+
* Created by ali on 10/2/18.
5+
*/
6+
7+
public class DateValidation {
8+
9+
10+
public static void GregorianValidate(int year, int month, int day, int hour, int min, int sec) {
11+
BaseValidate(year,month,hour, min, sec);
12+
GregorianDayValidate(year, month, day);
13+
}
14+
15+
public static void JalaliValidate(int year, int month, int day, int hour, int min, int sec) {
16+
BaseValidate(year,month,hour, min, sec);
17+
JalaliDayValidate(year, month, day);
18+
}
19+
20+
public static void HijriValidate(int year, int month, int day, int hour, int min, int sec) {
21+
BaseValidate(year,month,hour, min, sec);
22+
HijriDayValidate(year, month, day);
23+
}
24+
25+
26+
private static void GregorianDayValidate(int year, int month, int day) {
27+
28+
//day
29+
if (DateConverter.IsGregorianLeap(year) & month == 2) {
30+
if (day < 1 | day > GregorianDateTime.DaysInMonth[month] + 1)
31+
NotValid("day",day);
32+
} else {
33+
if (day < 1 | day > GregorianDateTime.DaysInMonth[month])
34+
NotValid("day",day);
35+
}
36+
37+
}
38+
39+
private static void JalaliDayValidate(int year, int month, int day) {
40+
41+
//day
42+
if (DateConverter.IsGregorianLeap(year) & month == 12) {
43+
if (day < 1 | day > JalaliDateTime.DaysInMonth[month] + 1)
44+
NotValid("day",day);
45+
} else {
46+
if (day < 1 | day > JalaliDateTime.DaysInMonth[month])
47+
NotValid("day",day);
48+
}
49+
50+
}
51+
52+
private static void HijriDayValidate(int year, int month, int day) {
53+
//day
54+
if (DateConverter.IsGregorianLeap(year) & month == 12) {
55+
if (day < 1 | day > HijriDateTime.DaysInMonth[month] + 1)
56+
NotValid("day",day);
57+
} else {
58+
if (day < 1 | day > HijriDateTime.DaysInMonth[month])
59+
NotValid("day",day);
60+
}
61+
}
62+
63+
64+
private static void BaseValidate(int year, int month, int hour, int min, int sec) {
65+
66+
//year
67+
if (year < 0) NotValid("year", year);
68+
69+
//month
70+
if (month < 1 | month > 12) NotValid("month", month);
71+
72+
//time
73+
if (hour > 23 | hour < 0) NotValid("hour", hour);
74+
if (min > 59 | min < 0) NotValid("minute", min);
75+
if (sec > 59 | sec < 0) NotValid("second", sec);
76+
}
77+
78+
79+
private static void NotValid(String what, int value) {
80+
throw new IllegalArgumentException("invalid " + what + " : " + value);
81+
}
82+
}

uneversaldatetools/src/main/java/com/ali/uneversaldatetools/date/DefaultCalendar.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@
66

77
public class DefaultCalendar {
88

9-
private Calendar defaultCalendar;
9+
private static Calendar mDefaultCalendar;
1010

11-
public Calendar getDefaultCalendar() {
12-
return defaultCalendar;
11+
public static Calendar getDefaultCalendar() {
12+
return mDefaultCalendar;
1313
}
1414

15-
public void setDefaultCalendar(Calendar defaultCalendar) {
16-
this.defaultCalendar = defaultCalendar;
15+
public static void setDefaultCalendar(Calendar DefaultCalendar) {
16+
mDefaultCalendar = DefaultCalendar;
1717
}
1818
}

0 commit comments

Comments
 (0)