Android Calendar的运用

  1. import java.text.DateFormat;
  2. import java.text.ParsePosition;
  3. import java.text.SimpleDateFormat;
  4. import java.util.Calendar;
  5. import java.util.Date;
  6. import java.util.GregorianCalendar;
  7. public class CalendarUtil {
  8. private int weeks = 0;// 用来全局控制 上一周,本周,下一周的周数变化
  9. private int MaxDate; // 一月最大天数
  10. private int MaxYear; // 一年最大天数
  11. public static void main(String[] args) {
  12. CalendarUtil tt = new CalendarUtil();
  13. System.out.println("获取当天日期:" + tt.getNowTime("yyyy-MM-dd"));
  14. System.out.println("获取本周一日期:" + tt.getMondayOFWeek());
  15. System.out.println("获取本周日的日期~:" + tt.getCurrentWeekday());
  16. System.out.println("获取上周一日期:" + tt.getPreviousWeekday());
  17. System.out.println("获取上周日日期:" + tt.getPreviousWeekSunday());
  18. System.out.println("获取下周一日期:" + tt.getNextMonday());
  19. System.out.println("获取下周日日期:" + tt.getNextSunday());
  20. System.out.println("获得相应周的周六的日期:" + tt.getNowTime("yyyy-MM-dd"));
  21. System.out.println("获取本月第一天日期:" + tt.getFirstDayOfMonth());
  22. System.out.println("获取本月最后一天日期:" + tt.getDefaultDay());
  23. System.out.println("获取上月第一天日期:" + tt.getPreviousMonthFirst());
  24. System.out.println("获取上月最后一天的日期:" + tt.getPreviousMonthEnd());
  25. System.out.println("获取下月第一天日期:" + tt.getNextMonthFirst());
  26. System.out.println("获取下月最后一天日期:" + tt.getNextMonthEnd());
  27. System.out.println("获取本年的第一天日期:" + tt.getCurrentYearFirst());
  28. System.out.println("获取本年最后一天日期:" + tt.getCurrentYearEnd());
  29. System.out.println("获取去年的第一天日期:" + tt.getPreviousYearFirst());
  30. System.out.println("获取去年的最后一天日期:" + tt.getPreviousYearEnd());
  31. System.out.println("获取明年第一天日期:" + tt.getNextYearFirst());
  32. System.out.println("获取明年最后一天日期:" + tt.getNextYearEnd());
  33. System.out.println("获取本季度第一天:" + tt.getThisSeasonFirstTime(11));
  34. System.out.println("获取本季度最后一天:" + tt.getThisSeasonFinallyTime(11));
  35. System.out.println("获取两个日期之间间隔天数2008-12-1~2008-9.29:"
  36. + CalendarUtil.getTwoDay("2008-12-1", "2008-9-29"));
  37. System.out.println("获取当前月的第几周:" + tt.getWeekOfMonth());
  38. System.out.println("获取当前年份:" + tt.getYear());
  39. System.out.println("获取当前月份:" + tt.getMonth());
  40. System.out.println("获取今天在本年的第几天:" + tt.getDayOfYear());
  41. System.out.println("获得今天在本月的第几天(获得当前日):" + tt.getDayOfMonth());
  42. System.out.println("获得今天在本周的第几天:" + tt.getDayOfWeek());
  43. System.out.println("获得半年后的日期:"
  44. + tt.convertDateToString(tt.getTimeYearNext()));
  45. }
  46. public static int getYear() {
  47. return Calendar.getInstance().get(Calendar.YEAR);
  48. }
  49. public static int getMonth() {
  50. return Calendar.getInstance().get(Calendar.MONTH) + 1;
  51. }
  52. public static int getDayOfYear() {
  53. return Calendar.getInstance().get(Calendar.DAY_OF_YEAR);
  54. }
  55. public static int getDayOfMonth() {
  56. return Calendar.getInstance().get(Calendar.DAY_OF_MONTH);
  57. }
  58. public static int getDayOfWeek() {
  59. return Calendar.getInstance().get(Calendar.DAY_OF_WEEK);
  60. }
  61. public static int getWeekOfMonth() {
  62. return Calendar.getInstance().get(Calendar.DAY_OF_WEEK_IN_MONTH);
  63. }
  64. public static Date getTimeYearNext() {
  65. Calendar.getInstance().add(Calendar.DAY_OF_YEAR, 183);
  66. return Calendar.getInstance().getTime();
  67. }
  68. public static String convertDateToString(Date dateTime) {
  69. SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
  70. return df.format(dateTime);
  71. }
  72. public static String getTwoDay(String sj1, String sj2) {
  73. SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");
  74. long day = 0;
  75. try {
  76. java.util.Date date = myFormatter.parse(sj1);
  77. java.util.Date mydate = myFormatter.parse(sj2);
  78. day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000);
  79. } catch (Exception e) {
  80. return "";
  81. }
  82. return day + "";
  83. }
  84. public static String getWeek(String sdate) {
  85. // 再转换为时间
  86. Date date = CalendarUtil.strToDate(sdate);
  87. Calendar c = Calendar.getInstance();
  88. c.setTime(date);
  89. // int hour=c.get(Calendar.DAY_OF_WEEK);
  90. // hour中存的就是星期几了,其范围 1~7
  91. // 1=星期日 7=星期六,其他类推
  92. return new SimpleDateFormat("EEEE").format(c.getTime());
  93. }
  94. public static Date strToDate(String strDate) {
  95. SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
  96. ParsePosition pos = new ParsePosition(0);
  97. Date strtodate = formatter.parse(strDate, pos);
  98. return strtodate;
  99. }
  100. public static long getDays(String date1, String date2) {
  101. if (date1 == null || date1.equals(""))
  102. return 0;
  103. if (date2 == null || date2.equals(""))
  104. return 0;
  105. // 转换为标准时间
  106. SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");
  107. java.util.Date date = null;
  108. java.util.Date mydate = null;
  109. try {
  110. date = myFormatter.parse(date1);
  111. mydate = myFormatter.parse(date2);
  112. } catch (Exception e) {
  113. }
  114. long day = (date.getTime() - mydate.getTime()) / (24 * 60 * 60 * 1000);
  115. return day;
  116. }
  117. public String getDefaultDay() {
  118. String str = "";
  119. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  120. Calendar lastDate = Calendar.getInstance();
  121. lastDate.set(Calendar.DATE, 1);// 设为当前月的1号
  122. lastDate.add(Calendar.MONTH, 1);// 加一个月,变为下月的1号
  123. lastDate.add(Calendar.DATE, -1);// 减去一天,变为当月最后一天
  124. str = sdf.format(lastDate.getTime());
  125. return str;
  126. }
  127. public String getPreviousMonthFirst() {
  128. String str = "";
  129. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  130. Calendar lastDate = Calendar.getInstance();
  131. lastDate.set(Calendar.DATE, 1);// 设为当前月的1号
  132. lastDate.add(Calendar.MONTH, -1);// 减一个月,变为下月的1号
  133. // lastDate.add(Calendar.DATE,-1);//减去一天,变为当月最后一天
  134. str = sdf.format(lastDate.getTime());
  135. return str;
  136. }
  137. public String getFirstDayOfMonth() {
  138. String str = "";
  139. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  140. Calendar lastDate = Calendar.getInstance();
  141. lastDate.set(Calendar.DATE, 1);// 设为当前月的1号
  142. str = sdf.format(lastDate.getTime());
  143. return str;
  144. }
  145. public String getCurrentWeekday() {
  146. weeks = 0;
  147. int mondayPlus = this.getMondayPlus();
  148. GregorianCalendar currentDate = new GregorianCalendar();
  149. currentDate.add(GregorianCalendar.DATE, mondayPlus + 6);
  150. Date monday = currentDate.getTime();
  151. DateFormat df = DateFormat.getDateInstance();
  152. String preMonday = df.format(monday);
  153. return preMonday;
  154. }
  155. public String getNowTime(String dateformat) {
  156. Date now = new Date();
  157. SimpleDateFormat dateFormat = new SimpleDateFormat(dateformat);// 可以方便地修改日期格式
  158. String hehe = dateFormat.format(now);
  159. return hehe;
  160. }
  161. private int getMondayPlus() {
  162. Calendar cd = Calendar.getInstance();
  163. // 获得今天是一周的第几天,星期日是第一天,星期二是第二天......
  164. int dayOfWeek = cd.get(Calendar.DAY_OF_WEEK) - 1; // 因为按中国礼拜一作为第一天所以这里减1
  165. if (dayOfWeek == 1) {
  166. return 0;
  167. } else {
  168. return 1 - dayOfWeek;
  169. }
  170. }
  171. public String getMondayOFWeek() {
  172. weeks = 0;
  173. int mondayPlus = this.getMondayPlus();
  174. GregorianCalendar currentDate = new GregorianCalendar();
  175. currentDate.add(GregorianCalendar.DATE, mondayPlus);
  176. Date monday = currentDate.getTime();
  177. DateFormat df = DateFormat.getDateInstance();
  178. String preMonday = df.format(monday);
  179. return preMonday;
  180. }
  181. public String getSaturday() {
  182. int mondayPlus = this.getMondayPlus();
  183. GregorianCalendar currentDate = new GregorianCalendar();
  184. currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * weeks + 6);
  185. Date monday = currentDate.getTime();
  186. DateFormat df = DateFormat.getDateInstance();
  187. String preMonday = df.format(monday);
  188. return preMonday;
  189. }
  190. public String getPreviousWeekSunday() {
  191. weeks = 0;
  192. weeks--;
  193. int mondayPlus = this.getMondayPlus();
  194. GregorianCalendar currentDate = new GregorianCalendar();
  195. currentDate.add(GregorianCalendar.DATE, mondayPlus + weeks);
  196. Date monday = currentDate.getTime();
  197. DateFormat df = DateFormat.getDateInstance();
  198. String preMonday = df.format(monday);
  199. return preMonday;
  200. }
  201. public String getPreviousWeekday() {
  202. weeks--;
  203. int mondayPlus = this.getMondayPlus();
  204. GregorianCalendar currentDate = new GregorianCalendar();
  205. currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * weeks);
  206. Date monday = currentDate.getTime();
  207. DateFormat df = DateFormat.getDateInstance();
  208. String preMonday = df.format(monday);
  209. return preMonday;
  210. }
  211. public String getNextMonday() {
  212. weeks++;
  213. int mondayPlus = this.getMondayPlus();
  214. GregorianCalendar currentDate = new GregorianCalendar();
  215. currentDate.add(GregorianCalendar.DATE, mondayPlus + 7);
  216. Date monday = currentDate.getTime();
  217. DateFormat df = DateFormat.getDateInstance();
  218. String preMonday = df.format(monday);
  219. return preMonday;
  220. }
  221. public String getNextSunday() {
  222. int mondayPlus = this.getMondayPlus();
  223. GregorianCalendar currentDate = new GregorianCalendar();
  224. currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 + 6);
  225. Date monday = currentDate.getTime();
  226. DateFormat df = DateFormat.getDateInstance();
  227. String preMonday = df.format(monday);
  228. return preMonday;
  229. }
  230. private int getMonthPlus() {
  231. Calendar cd = Calendar.getInstance();
  232. int monthOfNumber = cd.get(Calendar.DAY_OF_MONTH);
  233. cd.set(Calendar.DATE, 1);// 把日期设置为当月第一天
  234. cd.roll(Calendar.DATE, -1);// 日期回滚一天,也就是最后一天
  235. MaxDate = cd.get(Calendar.DATE);
  236. if (monthOfNumber == 1) {
  237. return -MaxDate;
  238. } else {
  239. return 1 - monthOfNumber;
  240. }
  241. }
  242. public String getPreviousMonthEnd() {
  243. String str = "";
  244. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  245. Calendar lastDate = Calendar.getInstance();
  246. lastDate.add(Calendar.MONTH, -1);// 减一个月
  247. lastDate.set(Calendar.DATE, 1);// 把日期设置为当月第一天
  248. lastDate.roll(Calendar.DATE, -1);// 日期回滚一天,也就是本月最后一天
  249. str = sdf.format(lastDate.getTime());
  250. return str;
  251. }
  252. public String getNextMonthFirst() {
  253. String str = "";
  254. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  255. Calendar lastDate = Calendar.getInstance();
  256. lastDate.add(Calendar.MONTH, 1);// 减一个月
  257. lastDate.set(Calendar.DATE, 1);// 把日期设置为当月第一天
  258. str = sdf.format(lastDate.getTime());
  259. return str;
  260. }
  261. public String getNextMonthEnd() {
  262. String str = "";
  263. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  264. Calendar lastDate = Calendar.getInstance();
  265. lastDate.add(Calendar.MONTH, 1);// 加一个月
  266. lastDate.set(Calendar.DATE, 1);// 把日期设置为当月第一天
  267. lastDate.roll(Calendar.DATE, -1);// 日期回滚一天,也就是本月最后一天
  268. str = sdf.format(lastDate.getTime());
  269. return str;
  270. }
  271. public String getNextYearEnd() {
  272. String str = "";
  273. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  274. Calendar lastDate = Calendar.getInstance();
  275. lastDate.add(Calendar.YEAR, 1);// 加一个年
  276. lastDate.set(Calendar.DAY_OF_YEAR, 1);
  277. lastDate.roll(Calendar.DAY_OF_YEAR, -1);
  278. str = sdf.format(lastDate.getTime());
  279. return str;
  280. }
  281. public String getNextYearFirst() {
  282. String str = "";
  283. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  284. Calendar lastDate = Calendar.getInstance();
  285. lastDate.add(Calendar.YEAR, 1);// 加一个年
  286. lastDate.set(Calendar.DAY_OF_YEAR, 1);
  287. str = sdf.format(lastDate.getTime());
  288. return str;
  289. }
  290. private int getMaxYear() {
  291. Calendar cd = Calendar.getInstance();
  292. cd.set(Calendar.DAY_OF_YEAR, 1);// 把日期设为当年第一天
  293. cd.roll(Calendar.DAY_OF_YEAR, -1);// 把日期回滚一天。
  294. int MaxYear = cd.get(Calendar.DAY_OF_YEAR);
  295. return MaxYear;
  296. }
  297. private int getYearPlus() {
  298. Calendar cd = Calendar.getInstance();
  299. int yearOfNumber = cd.get(Calendar.DAY_OF_YEAR);// 获得当天是一年中的第几天
  300. cd.set(Calendar.DAY_OF_YEAR, 1);// 把日期设为当年第一天
  301. cd.roll(Calendar.DAY_OF_YEAR, -1);// 把日期回滚一天。
  302. int MaxYear = cd.get(Calendar.DAY_OF_YEAR);
  303. if (yearOfNumber == 1) {
  304. return -MaxYear;
  305. } else {
  306. return 1 - yearOfNumber;
  307. }
  308. }
  309. public String getCurrentYearFirst() {
  310. int yearPlus = this.getYearPlus();
  311. GregorianCalendar currentDate = new GregorianCalendar();
  312. currentDate.add(GregorianCalendar.DATE, yearPlus);
  313. Date yearDay = currentDate.getTime();
  314. DateFormat df = DateFormat.getDateInstance();
  315. String preYearDay = df.format(yearDay);
  316. return preYearDay;
  317. }
  318. // 获得本年最后一天的日期 *
  319. public String getCurrentYearEnd() {
  320. Date date = new Date();
  321. SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy");// 可以方便地修改日期格式
  322. String years = dateFormat.format(date);
  323. return years + "-12-31";
  324. }
  325. // 获得上年第一天的日期 *
  326. public String getPreviousYearFirst() {
  327. Date date = new Date();
  328. SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy");// 可以方便地修改日期格式
  329. String years = dateFormat.format(date);
  330. int years_value = Integer.parseInt(years);
  331. years_value--;
  332. return years_value + "-1-1";
  333. }
  334. // 获得上年最后一天的日期
  335. public String getPreviousYearEnd() {
  336. weeks--;
  337. int yearPlus = this.getYearPlus();
  338. GregorianCalendar currentDate = new GregorianCalendar();
  339. currentDate.add(GregorianCalendar.DATE, yearPlus + MaxYear * weeks
  340. + (MaxYear - 1));
  341. Date yearDay = currentDate.getTime();
  342. DateFormat df = DateFormat.getDateInstance();
  343. String preYearDay = df.format(yearDay);
  344. return preYearDay;
  345. }
  346. public String getThisSeasonFirstTime(int month) {
  347. int array[][] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 }, { 10, 11, 12 } };
  348. int season = 1;
  349. if (month >= 1 && month <= 3) {
  350. season = 1;
  351. }
  352. if (month >= 4 && month <= 6) {
  353. season = 2;
  354. }
  355. if (month >= 7 && month <= 9) {
  356. season = 3;
  357. }
  358. if (month >= 10 && month <= 12) {
  359. season = 4;
  360. }
  361. int start_month = array[season - 1][0];
  362. int end_month = array[season - 1][2];
  363. Date date = new Date();
  364. SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy");// 可以方便地修改日期格式
  365. String years = dateFormat.format(date);
  366. int years_value = Integer.parseInt(years);
  367. int start_days = 1;// years+"-"+String.valueOf(start_month)+"-1";//getLastDayOfMonth(years_value,start_month);
  368. int end_days = getLastDayOfMonth(years_value, end_month);
  369. String seasonDate = years_value + "-" + start_month + "-" + start_days;
  370. return seasonDate;
  371. }
  372. public String getThisSeasonFinallyTime(int month) {
  373. int array[][] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 }, { 10, 11, 12 } };
  374. int season = 1;
  375. if (month >= 1 && month <= 3) {
  376. season = 1;
  377. }
  378. if (month >= 4 && month <= 6) {
  379. season = 2;
  380. }
  381. if (month >= 7 && month <= 9) {
  382. season = 3;
  383. }
  384. if (month >= 10 && month <= 12) {
  385. season = 4;
  386. }
  387. int start_month = array[season - 1][0];
  388. int end_month = array[season - 1][2];
  389. Date date = new Date();
  390. SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy");// 可以方便地修改日期格式
  391. String years = dateFormat.format(date);
  392. int years_value = Integer.parseInt(years);
  393. int start_days = 1;// years+"-"+String.valueOf(start_month)+"-1";//getLastDayOfMonth(years_value,start_month);
  394. int end_days = getLastDayOfMonth(years_value, end_month);
  395. String seasonDate = years_value + "-" + end_month + "-" + end_days;
  396. return seasonDate;
  397. }
  398. private int getLastDayOfMonth(int year, int month) {
  399. if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8
  400. || month == 10 || month == 12) {
  401. return 31;
  402. }
  403. if (month == 4 || month == 6 || month == 9 || month == 11) {
  404. return 30;
  405. }
  406. if (month == 2) {
  407. if (isLeapYear(year)) {
  408. return 29;
  409. } else {
  410. return 28;
  411. }
  412. }
  413. return 0;
  414. }
  415. public boolean isLeapYear(int year) {
  416. return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
  417. }
  418. public boolean isLeapYear2(int year) {
  419. return new GregorianCalendar().isLeapYear(year);
  420. }
  421. }
时间: 2024-12-20 17:39:49

Android Calendar的运用的相关文章

Android Calendar的学习与运用

[java]mport java.text.DateFormat; import java.text.ParsePosition; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; /** * Android Calendar的运用 * @author Administrator * */ public c

Android Calendar获取年月日时分秒毫秒

开始使用new Date()测试,并用通过date.getMonth(),和date.getDay()获取,不过后来发现这两个访求是jdk1.1版本的,现在已经不用了,而且结果也不正确. int month = (date.get(Calendar.MONTH))+1; int day = date.get(Calendar.DAY_OF_MONTH); 获取当前的月份和日期 试了一下,果然正确 后来查看java doc文档,MONTH字段解释如下 Field number for get an

Android开发-API指南- Calendar Provider

Calendar Provider 英文原文:http://developer.android.com/guide/topics/providers/calendar-provider.html 采集日期:2015-05-10 在本文中 基础知识 用户权限 日程表 查询日程 修改日程 插入日程 events 表 添加 events 数据 更新 events 数据 删除 events 数据 attendees 表 添加 attendees 数据 reminders 表 添加 reminders 数

Android官方文档之Calendar Provider

Calendar Provider是一个用于提供用户标记在日历上事件的数据仓库.Calendar Provider 的API提供了包括增删改查在内的一系列操作日历事件的方法. 您可以在自己的应用程序或Adapter中使用Calendar Provider 的API.Adapter的相关用法将在本文的最后介绍. 通常来说,要访问日历应用程序中的数据,需要您在manifest中声明权限:为了简化操作, Calendar Provider 提供了一系列的Intents,使用这些Intents可以方便添

android 日历

[1].[代码] [Java]代码 跳至 [1] ? 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 //读取日历事件     public static void getCalendarInfo(Activity activity,String tag){    

Android信号处理

首先澄清,本文讨论的信号是 Linux 软中断信号,而不是手机状态条里面用于显示当前手机通信强度的那个信号. 我们知道,Unix系统里信号是一种软中断.尽管本身存在缺陷(后面会讨论到),但是作为Unix系统重要的异步事件处理方式之一,在Unix系统中发挥重要的作用.可以说,所有Unix系统(包括Linux)都不可能忽略信号的支持. Android 本质上也是个在 Linux 系统,自然也少不了对 信号处理的支持. 但我们也知道,Android和其他Linux系统一个很大的差异就是增加了虚拟机的支

Android 简单的FC

直接贴log 01-02 08:17:56.589 I/ActivityManager( 312): Start proc com.android.providers.calendar for content provider com.android.providers.calendar/.CalendarProvider2: pid=3064 uid=10007 gids={3003, 1015} 01-02 08:17:56.709 I/ActivityThread( 3064): Pub

Android开发- 数据库和Content Provider

SQLiteOpenHelper SQLiteOpenHelper是一个抽象类,用来实现创建.打开和升级数据库的最佳实践模式. private static class HoardDBOpenHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME = "myDatabase.db"; private static final String DATABASE_TABLE = "Gol

android ContentResolver详解

通过以前文章的学习,知道ContentResolver是通过ContentProvider来获取其他与应用程序共享的数据,那么ContentResolver与ContentProvider的接口应该差不多的.其中ContentProvider负责组织应用程序的数据:向其他应用程序提供数据:ContentResolver则负责获取ContentProvider提供的数据:修改/添加/删除更新数据等: ContentProvider 是如何向外界提供数据的? Android提供了ContentPro