TimeUtil.java 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. package com.edufound.reader.util;
  2. import android.text.format.Time;
  3. import java.text.SimpleDateFormat;
  4. import java.util.Calendar;
  5. import java.util.Date;
  6. import java.util.Locale;
  7. import java.util.TimeZone;
  8. public class TimeUtil {
  9. /**
  10. * 日期字符串转换Date实体
  11. */
  12. public static Date parseServerTime(String serverTime, String format) {
  13. if (format == null || format.isEmpty()) {
  14. format = "yyyy-MM-dd HH:mm:ss";
  15. }
  16. SimpleDateFormat sdf = new SimpleDateFormat(format, Locale.CHINESE);
  17. sdf.setTimeZone(TimeZone.getTimeZone("GMT+8:00"));
  18. Date date = null;
  19. try {
  20. date = sdf.parse(serverTime);
  21. } catch (Exception e) {
  22. e.printStackTrace();
  23. }
  24. return date;
  25. }
  26. /**
  27. * 秒数转换成时分秒
  28. */
  29. public static String convertSecToTimeString(long lSeconds) {
  30. long nHour = lSeconds / 3600;
  31. long nMin = lSeconds % 3600;
  32. long nSec = nMin % 60;
  33. nMin = nMin / 60;
  34. return String.format("%02d小时%02d分钟%02d秒", nHour, nMin, nSec);
  35. }
  36. /**
  37. * Date对象获取时间字符串
  38. */
  39. public static String getDateStr(Date date, String format) {
  40. if (format == null || format.isEmpty()) {
  41. format = "yyyy-MM-dd HH:mm:ss";
  42. }
  43. SimpleDateFormat formatter = new SimpleDateFormat(format);
  44. return formatter.format(date);
  45. }
  46. /**
  47. * 时间戳转换日期格式字符串
  48. */
  49. public static String timeStamp2Date(long time, String format) {
  50. if (format == null || format.isEmpty()) {
  51. format = "yyyy-MM-dd HH:mm:ss";
  52. }
  53. SimpleDateFormat sdf = new SimpleDateFormat(format);
  54. return sdf.format(new Date(time));
  55. }
  56. /**
  57. * 日期格式字符串转换时间戳
  58. */
  59. public static String date2TimeStamp(String date, String format) {
  60. try {
  61. SimpleDateFormat sdf = new SimpleDateFormat(format);
  62. return String.valueOf(sdf.parse(date).getTime() / 1000);
  63. } catch (Exception e) {
  64. e.printStackTrace();
  65. }
  66. return "";
  67. }
  68. /**
  69. * 获取某个日期前后N天的日期
  70. *
  71. * @param beginDate
  72. * @param distanceDay 前后几天 如获取前7天日期则传-7即可;如果后7天则传7
  73. * @param format 日期格式,默认"yyyy-MM-dd"
  74. * @return
  75. */
  76. public static String getOldDateByDay(Date beginDate, int distanceDay, String format) {
  77. if (format == null || format.isEmpty()) {
  78. format = "yyyy-MM-dd";
  79. }
  80. SimpleDateFormat dft = new SimpleDateFormat(format);
  81. Calendar date = Calendar.getInstance();
  82. date.setTime(beginDate);
  83. date.set(Calendar.DATE, date.get(Calendar.DATE) + distanceDay);
  84. Date endDate = null;
  85. try {
  86. endDate = dft.parse(dft.format(date.getTime()));
  87. } catch (Exception e) {
  88. e.printStackTrace();
  89. }
  90. return dft.format(endDate);
  91. }
  92. /**
  93. * 获取前后几个月的日期
  94. *
  95. * @param beginDate
  96. * @param distanceMonth
  97. * @param format
  98. * @return
  99. */
  100. public static String getOldDateByMonth(Date beginDate, int distanceMonth, String format) {
  101. if (format == null || format.isEmpty()) {
  102. format = "yyyy-MM-dd";
  103. }
  104. SimpleDateFormat dft = new SimpleDateFormat(format);
  105. Calendar date = Calendar.getInstance();
  106. date.setTime(beginDate);
  107. date.set(Calendar.MONTH, date.get(Calendar.MONTH) + distanceMonth);
  108. Date endDate = null;
  109. try {
  110. endDate = dft.parse(dft.format(date.getTime()));
  111. } catch (Exception e) {
  112. e.printStackTrace();
  113. }
  114. return dft.format(endDate);
  115. }
  116. /**
  117. * 判断一个时间是否在某个时间范围内
  118. */
  119. public static boolean isCurrentInTimeScope(int deadlineHour, int deadlineMin) {
  120. boolean result;
  121. // 1000 * 60 * 60 * 24
  122. final long aDayInMillis = 86400000;
  123. final long currentTimeMillis = System.currentTimeMillis();
  124. //截止时间
  125. Time deadlineTime = new Time();
  126. deadlineTime.set(currentTimeMillis);
  127. deadlineTime.hour = deadlineHour;
  128. deadlineTime.minute = deadlineMin;
  129. //当前时间
  130. Time startTime = new Time();
  131. startTime.set(currentTimeMillis);
  132. //当前时间推后20分钟
  133. Date d = new Date(currentTimeMillis);
  134. long myTime = (d.getTime() / 1000) + 20 * 60;
  135. d.setTime(myTime * 1000);
  136. Time endTime = new Time();
  137. endTime.set(myTime);
  138. if (!startTime.before(endTime)) {
  139. // 跨天的特殊情况(比如22:00-8:00)
  140. startTime.set(startTime.toMillis(true) - aDayInMillis);
  141. result = !deadlineTime.before(startTime) && !deadlineTime.after(endTime);
  142. // startTime <= deadlineTime <=endTime
  143. Time startTimeInThisDay = new Time();
  144. startTimeInThisDay.set(startTime.toMillis(true) + aDayInMillis);
  145. if (!deadlineTime.before(startTimeInThisDay)) {
  146. result = true;
  147. }
  148. } else {
  149. // 普通情况(比如 8:00 - 14:00)
  150. result = !deadlineTime.before(startTime) && !deadlineTime.after(endTime);
  151. // startTime <= deadlineTime <=endTime
  152. }
  153. return result;
  154. }
  155. /**
  156. * 秒数转化为日期
  157. */
  158. public static String getDateFromSeconds(String seconds) {
  159. if (seconds == null)
  160. return " ";
  161. else {
  162. Date date = new Date();
  163. try {
  164. date.setTime(Long.parseLong(seconds) * 1000);
  165. } catch (NumberFormatException nfe) {
  166. }
  167. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  168. return sdf.format(date);
  169. }
  170. }
  171. }