├── .idea ├── .name ├── copyright │ └── profiles_settings.xml ├── encodings.xml ├── vcs.xml ├── modules.xml ├── libraries │ ├── Gradle__junit_junit_4_11.xml │ ├── Gradle__joda_time_joda_time_2_9_2.xml │ ├── Gradle__org_javatuples_javatuples_1_2.xml │ └── Gradle__org_hamcrest_hamcrest_core_1_3.xml ├── compiler.xml ├── gradle.xml ├── misc.xml ├── uiDesigner.xml └── workspace.xml ├── settings.gradle ├── .gradle └── 2.11 │ └── taskArtifacts │ ├── cache.properties │ ├── fileHashes.bin │ ├── fileSnapshots.bin │ ├── taskArtifacts.bin │ ├── cache.properties.lock │ └── outputFileStates.bin ├── .DS_Store ├── src ├── .DS_Store └── main │ ├── .DS_Store │ └── java │ ├── .DS_Store │ └── io │ ├── .DS_Store │ └── github │ ├── .DS_Store │ └── angebagui │ ├── .DS_Store │ └── material_design_date_format │ ├── .DS_Store │ ├── Context.java │ ├── Utils.java │ └── MaterialDesignDateFormats.java ├── README.md └── material-design-date-format.iml /.idea/.name: -------------------------------------------------------------------------------- 1 | material-design-date-format -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'material-design-date-format' 2 | 3 | -------------------------------------------------------------------------------- /.gradle/2.11/taskArtifacts/cache.properties: -------------------------------------------------------------------------------- 1 | #Mon Feb 15 18:34:50 GMT 2016 2 | -------------------------------------------------------------------------------- /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/material-design-date-format/master/.DS_Store -------------------------------------------------------------------------------- /src/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/material-design-date-format/master/src/.DS_Store -------------------------------------------------------------------------------- /src/main/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/material-design-date-format/master/src/main/.DS_Store -------------------------------------------------------------------------------- /.idea/copyright/profiles_settings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /src/main/java/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/material-design-date-format/master/src/main/java/.DS_Store -------------------------------------------------------------------------------- /src/main/java/io/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/material-design-date-format/master/src/main/java/io/.DS_Store -------------------------------------------------------------------------------- /src/main/java/io/github/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/material-design-date-format/master/src/main/java/io/github/.DS_Store -------------------------------------------------------------------------------- /.gradle/2.11/taskArtifacts/fileHashes.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/material-design-date-format/master/.gradle/2.11/taskArtifacts/fileHashes.bin -------------------------------------------------------------------------------- /.gradle/2.11/taskArtifacts/fileSnapshots.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/material-design-date-format/master/.gradle/2.11/taskArtifacts/fileSnapshots.bin -------------------------------------------------------------------------------- /.gradle/2.11/taskArtifacts/taskArtifacts.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/material-design-date-format/master/.gradle/2.11/taskArtifacts/taskArtifacts.bin -------------------------------------------------------------------------------- /src/main/java/io/github/angebagui/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/material-design-date-format/master/src/main/java/io/github/angebagui/.DS_Store -------------------------------------------------------------------------------- /.gradle/2.11/taskArtifacts/cache.properties.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/material-design-date-format/master/.gradle/2.11/taskArtifacts/cache.properties.lock -------------------------------------------------------------------------------- /.gradle/2.11/taskArtifacts/outputFileStates.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/material-design-date-format/master/.gradle/2.11/taskArtifacts/outputFileStates.bin -------------------------------------------------------------------------------- /.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/main/java/io/github/angebagui/material_design_date_format/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/angebagui/material-design-date-format/master/src/main/java/io/github/angebagui/material_design_date_format/.DS_Store -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # material-design-date-format 2 | 3 | Google Material Design specification provides data formats. This data format gives date pattern. We decided to build a simple library that give you this specification with method. 4 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/main/java/io/github/angebagui/material_design_date_format/Context.java: -------------------------------------------------------------------------------- 1 | package io.github.angebagui.material_design_date_format; 2 | 3 | /** 4 | * Created by angebagui on 15/02/2016. 5 | */ 6 | public enum Context { 7 | FUTURE(1), 8 | PAST(2), 9 | DISTANT_PAST(3), 10 | WEEKDAY(4), 11 | DURATION(5); 12 | 13 | private int value; 14 | 15 | private Context(int value){ 16 | this.value = value; 17 | } 18 | 19 | 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/io/github/angebagui/material_design_date_format/Utils.java: -------------------------------------------------------------------------------- 1 | package io.github.angebagui.material_design_date_format; 2 | 3 | /** 4 | * Created by angebagui on 15/02/2016. 5 | */ 6 | public class Utils { 7 | 8 | public static String get(int number){ 9 | if (number<10){ 10 | return "0"+number; 11 | }else { 12 | return String.valueOf(number); 13 | } 14 | } 15 | public static String getHalfdayOfDay(int number){ 16 | return null; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__junit_junit_4_11.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__joda_time_joda_time_2_9_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__org_javatuples_javatuples_1_2.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/libraries/Gradle__org_hamcrest_hamcrest_core_1_3.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 22 | 23 | -------------------------------------------------------------------------------- /material-design-date-format.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | scala-sdk-2.11.7 24 | 25 | 30 | 31 | 32 | 33 | 34 | 35 | 1.8 36 | 37 | 42 | 43 | 44 | 45 | 46 | 47 | 1.8 (1) 48 | 49 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 65 | 66 | 67 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /src/main/java/io/github/angebagui/material_design_date_format/MaterialDesignDateFormats.java: -------------------------------------------------------------------------------- 1 | package io.github.angebagui.material_design_date_format; 2 | 3 | 4 | import org.javatuples.Pair; 5 | import org.joda.time.*; 6 | 7 | import java.util.Locale; 8 | 9 | /** 10 | * Created by angebagui on 06/02/2016. 11 | */ 12 | public class MaterialDesignDateFormats { 13 | 14 | //Time and date ranges 15 | /** 16 | * Date and time ranges are formatted based on the following: 17 | * The year is the same on both sides of the range 18 | * It’s the current year on both sides of the range 19 | * Whether both times have the same AM or PM 20 | */ 21 | 22 | /** 23 | * 24 | * Separate a range of dates or times with an en dash, without spaces. 25 | * Add spaces when spelling out months, or to remove ambiguity. 26 | * 27 | * 8:00 AM–12:30 PM 28 | * 6 Jan – 2 Feb 29 | * 30 | * @param dateDepart 31 | * @param dateArrivee 32 | * @return 33 | */ 34 | public static String enDashRangeElement(long dateDepart,long dateArrivee){ 35 | StringBuilder builder = new StringBuilder(); 36 | 37 | return builder.toString(); 38 | } 39 | // Date and time modifications by context 40 | /** 41 | * Include time to a future day or date : 10 Jan, 08:00 42 | * 43 | * @param millis 44 | * @return 45 | */ 46 | public static String futureContext(long millis, Locale locale){ 47 | StringBuilder builder = new StringBuilder(); 48 | DateTime dateTime = new DateTime(millis); 49 | YearMonth yearMonth= YearMonth.fromDateFields(dateTime.toDate()); 50 | builder.append(Utils.get(dateTime.getDayOfMonth())); 51 | builder.append(" "); 52 | builder.append(yearMonth.monthOfYear().getAsShortText(locale)); 53 | builder.append(","); 54 | builder.append(" "); 55 | builder.append(Utils.get(dateTime.getHourOfDay())); 56 | builder.append(":"); 57 | builder.append(Utils.get(dateTime.getMinuteOfHour())); 58 | 59 | 60 | return builder.toString(); 61 | } 62 | /** 63 | * When referring to a past time, display both date and time. : Reminded Jan 5, 7:16 AM 64 | * 65 | * @param millis 66 | * @return 67 | */ 68 | public static String pastContext(long millis,Locale locale){ 69 | StringBuilder builder = new StringBuilder(); 70 | DateTime dateTime = new DateTime(millis); 71 | YearMonth yearMonth= YearMonth.fromDateFields(dateTime.toDate()); 72 | builder.append(yearMonth.monthOfYear().getAsShortText(locale)); 73 | builder.append(" "); 74 | builder.append(Utils.get(dateTime.getDayOfMonth())); 75 | 76 | builder.append(","); 77 | builder.append(" "); 78 | builder.append(Utils.get(dateTime.getHourOfDay())); 79 | builder.append(":"); 80 | builder.append(Utils.get(dateTime.getMinuteOfHour())); 81 | 82 | 83 | return builder.toString(); 84 | } 85 | /** 86 | * Omit the time for events in the distant past : 3 Jan 87 | * 88 | * @param millis 89 | * @return 90 | */ 91 | public static String distancePastContext(long millis, Locale locale){ 92 | StringBuilder builder = new StringBuilder(); 93 | DateTime dateTime = new DateTime(millis); 94 | YearMonth yearMonth= YearMonth.fromDateFields(dateTime.toDate()); 95 | builder.append(Utils.get(dateTime.getDayOfMonth())); 96 | builder.append(" "); 97 | builder.append(yearMonth.monthOfYear().getAsShortText(locale)); 98 | 99 | return builder.toString(); 100 | } 101 | /** 102 | * When referring to a day of the week, such as for Calendar invites, 103 | * display the abbreviated day separated by a comma. : Mon, Jan 10, 8:00 AM 104 | * 105 | * @param millis 106 | * @return 107 | */ 108 | public static String weekdayContext(long millis,Locale locale){ 109 | StringBuilder builder = new StringBuilder(); 110 | DateTime dateTime = new DateTime(millis); 111 | YearMonth yearMonth= YearMonth.fromDateFields(dateTime.toDate()); 112 | 113 | builder.append(dateTime.dayOfWeek().getAsShortText(locale)); 114 | builder.append(","); 115 | builder.append(" "); 116 | builder.append(yearMonth.monthOfYear().getAsShortText(locale)); 117 | builder.append(" "); 118 | builder.append(Utils.get(dateTime.getDayOfMonth())); 119 | builder.append(","); 120 | builder.append(" "); 121 | if (locale.equals(Locale.ENGLISH)){ 122 | builder.append(dateTime.getHourOfDay()); 123 | builder.append(":"); 124 | builder.append(Utils.get(dateTime.getMinuteOfHour())); 125 | builder.append(" "); 126 | // TODO:: Add AM or PM 127 | //DateTimeFormat.forPattern(pattern).withLocale(Locale.FRANCE).print(dt); 128 | }else { 129 | builder.append(Utils.get(dateTime.getHourOfDay())); 130 | builder.append(":"); 131 | builder.append(Utils.get(dateTime.getMinuteOfHour())); 132 | } 133 | 134 | 135 | 136 | return builder.toString(); 137 | } 138 | /** 139 | * Show the duration of a recording, like audio or video, in the format H:MM:SS. 140 | * Omit hours or seconds if they don’t apply. 141 | 142 | *Use the same format across the same context. A video labelled “3:15” referring to 143 | *hours and minutes, should not use that time format later on that page to refer to 144 | * minutes and seconds. : 0:30 1:01:05 145 | * 146 | * @param startMillis 147 | * @param endMillis 148 | * @return 149 | */ 150 | public static Pair durationContext(long startMillis, long endMillis){ 151 | StringBuilder builder = new StringBuilder(); 152 | DateTime dateTime = new DateTime(startMillis); 153 | builder.append(dateTime.getHourOfDay()); 154 | builder.append(":"); 155 | builder.append(Utils.get(dateTime.getMinuteOfHour())); 156 | if (dateTime.getSecondOfMinute()>0){ 157 | builder.append(":"); 158 | builder.append(Utils.get(dateTime.getSecondOfMinute())); 159 | } 160 | String startDate = builder.toString(); 161 | 162 | DateTime dateTime1 = new DateTime(startMillis); 163 | StringBuilder builder1 = new StringBuilder(); 164 | builder1.append(dateTime1.getHourOfDay()); 165 | builder1.append(":"); 166 | builder1.append(dateTime1.getMinuteOfHour()); 167 | if (dateTime1.getSecondOfMinute()>0){ 168 | builder1.append(":"); 169 | builder1.append(Utils.get(dateTime1.getSecondOfMinute())); 170 | } 171 | String endDate = builder1.toString(); 172 | return new Pair(startDate,endDate); 173 | } 174 | 175 | private static boolean currentYear(long millis){ 176 | DateTime dateTime = new DateTime(millis); 177 | Years dateYears = Years.years(dateTime.year().get()); 178 | Years currentDateYears = Years.years(DateTime.now().year().get()); 179 | return !dateYears.isGreaterThan(currentDateYears) || !dateYears.isLessThan(currentDateYears); 180 | } 181 | public static void main(String [] args){ 182 | long startMillis = System.currentTimeMillis(); 183 | long endMillis = System.currentTimeMillis()+1000000; 184 | Pair duration = durationContext(startMillis, endMillis); 185 | String futureContext = weekdayContext(System.currentTimeMillis(),Locale.ENGLISH); 186 | System.out.print(String.format("Start at %s and End at %s",duration.getValue0(),duration.getValue1())); 187 | } 188 | } 189 | -------------------------------------------------------------------------------- /.idea/uiDesigner.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | -------------------------------------------------------------------------------- /.idea/workspace.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 20 | 21 | 22 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 43 | 44 | 47 | 48 | 49 | 50 | 53 | 54 | 57 | 58 | 61 | 62 | 63 | 64 | 67 | 68 | 71 | 72 | 75 | 76 | 77 | 78 | 81 | 82 | 85 | 86 | 89 | 90 | 93 | 94 | 95 | 96 | 99 | 100 | 103 | 104 | 107 | 108 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 166 | 167 | 168 | 170 | 171 | 191 | 331 | 336 | 430 | 433 | 434 | 435 | 449 | 450 | 451 | 456 | 457 | 458 | 459 | 460 | 461 | 464 | 465 | 466 | 467 | 468 | 469 | 470 | 471 | 472 | 473 | 474 | 475 | 476 | 477 | 478 | 479 | 480 | 481 | 482 | 483 | 484 | 485 | 486 | 487 | 488 | 489 | 490 | 491 | 492 | 493 | 494 | 495 | 498 | 499 | 500 | 501 | 504 | 505 | 508 | 509 | 510 | 511 | 514 | 515 | 518 | 519 | 522 | 523 | 526 | 527 | 530 | 531 | 534 | 535 | 538 | 539 | 540 | 541 | 544 | 545 | 548 | 549 | 552 | 553 | 556 | 557 | 560 | 561 | 564 | 565 | 566 | 567 | 568 | 569 | 570 | 571 | 572 | 573 | 574 | 575 | 576 | 577 | 578 | 579 | 580 | 581 | 588 | 593 | 595 | 596 | 597 | 598 | 599 | 606 | 611 | 613 | 614 | 615 | 616 | 617 | 618 | 619 | 620 | 621 | 622 | 623 | 625 | 626 | 627 | 628 | 635 | 640 | 642 | 643 | 644 | 645 | 646 | 647 | 650 | 651 | 664 | 665 | 666 | 670 | 671 | 672 | 699 | 700 | 701 | 729 | 730 | 737 | 738 | 739 | 752 | 753 | 754 | 761 | 764 | 766 | 767 | 768 | 769 | 770 | 771 | 772 | 773 | 774 | 775 | 776 | 777 | 778 | 779 | 780 | 794 | 795 | 796 | 797 | 798 | 799 | 800 | 801 | 815 | 816 | 817 | 818 | 819 | 820 | 821 | 822 | 823 | 824 | 825 | 826 | 840 | 841 | 842 | 853 | 854 | 855 | 865 | 866 | 873 | 874 | 875 | 876 | 877 | 878 | 879 | 880 | 881 | 882 | 883 | 884 | 885 | 886 | 887 | 888 | 889 | 890 | 891 | 892 | 893 | 894 | 895 | 896 | 897 | 898 | 899 | 900 | 901 | 902 | 903 | 904 | 905 | 906 | 924 | 931 | 932 | 933 | 934 | 952 | 959 | 960 | 961 | 962 | 963 | 964 | 965 | 966 | 967 | 968 | 969 | 970 | 971 | 972 | 973 | 974 | 975 | 976 | 977 | 978 | 979 | 980 | 981 | 982 | 983 | 984 | 985 | 986 | 987 | 988 | 989 | 990 | 991 | 992 | 993 | 994 | 995 | 996 | 997 | 998 | 999 | 1000 | 1001 | 1002 | 1003 | 1004 | 1005 | 1018 | 1021 | 1022 | 1023 | 1024 | 1025 | 1026 | 1455561237964 1027 | 1030 | 1031 | 1032 | 1033 | 1034 | 1035 | 1036 | 1037 | 1038 | 1039 | 1040 | 1041 | 1042 | 1043 | 1044 | 1045 | 1046 | 1047 | 1048 | 1049 | 1050 | 1051 | 1052 | 1053 | 1054 | 1055 | 1056 | 1057 | 1058 | 1059 | 1060 | 1061 | 1062 | 1064 | 1065 | 1066 | 1067 | 1068 | 1069 | 1072 | 1073 | 1074 | 1075 | 1076 | 1077 | 1078 | 1079 | 1080 | 1081 | 1082 | 1083 | 1084 | 1085 | 1086 | 1087 | 1088 | 1089 | 1090 | 1091 | 1092 | 1093 | 1094 | 1095 | 1096 | 1097 | 1098 | 1099 | 1100 | 1101 | 1102 | 1103 | 1104 | 1105 | 1106 | 1107 | 1108 | 1109 | 1110 | 1111 | 1112 | 1113 | 1114 | 1115 | 1116 | 1117 | 1118 | 1119 | 1120 | 1121 | 1122 | 1123 | 1124 | 1125 | 1126 | 1127 | 1128 | 1129 | 1130 | 1131 | 1132 | 1133 | 1134 | 1135 | 1136 | 1137 | 1138 | 1139 | 1140 | 1141 | 1142 | 1143 | 1144 | 1145 | 1146 | 1147 | 1148 | 1149 | 1150 | 1151 | 1152 | 1153 | 1154 | 1155 | 1156 | 1157 | 1158 | 1159 | 1160 | 1161 | 1162 | 1163 | 1164 | 1165 | 1166 | 1167 | 1168 | 1169 | 1170 | --------------------------------------------------------------------------------