Android 开发笔记___DateUtil——Time

  1 package com.example.alimjan.hello_world;
  2
  3 /**
  4  * Created by alimjan on 6/30/2017.
  5  */
  6
  7         import java.text.ParseException;
  8         import java.text.SimpleDateFormat;
  9         import java.util.Calendar;
 10         import java.util.Date;
 11
 12
 13 public class DateUtil {
 14
 15     private static final String FORMAT = "yyyy-MM-dd HH:mm:ss";
 16
 17     public static Date str2Date(String str) {
 18         return str2Date(str, null);
 19     }
 20
 21     public static Date str2Date(String str, String format) {
 22         if (str == null || str.length() == 0) {
 23             return null;
 24         }
 25         if (format == null || format.length() == 0) {
 26             format = FORMAT;
 27         }
 28         Date date = null;
 29         try {
 30             SimpleDateFormat sdf = new SimpleDateFormat(format);
 31             date = sdf.parse(str);
 32
 33         } catch (Exception e) {
 34             e.printStackTrace();
 35         }
 36         return date;
 37
 38     }
 39
 40     public static Calendar str2Calendar(String str) {
 41         return str2Calendar(str, null);
 42
 43     }
 44
 45     public static Calendar str2Calendar(String str, String format) {
 46
 47         Date date = str2Date(str, format);
 48         if (date == null) {
 49             return null;
 50         }
 51         Calendar c = Calendar.getInstance();
 52         c.setTime(date);
 53
 54         return c;
 55
 56     }
 57
 58     public static String date2Str(Calendar c) {// yyyy-MM-dd HH:mm:ss
 59         return date2Str(c, null);
 60     }
 61
 62     public static String date2Str(Calendar c, String format) {
 63         if (c == null) {
 64             return null;
 65         }
 66         return date2Str(c.getTime(), format);
 67     }
 68
 69     public static String date2Str(Date d) {// yyyy-MM-dd HH:mm:ss
 70         return date2Str(d, null);
 71     }
 72
 73     public static String date2Str(Date d, String format) {// yyyy-MM-dd HH:mm:ss
 74         if (d == null) {
 75             return null;
 76         }
 77         if (format == null || format.length() == 0) {
 78             format = FORMAT;
 79         }
 80         SimpleDateFormat sdf = new SimpleDateFormat(format);
 81         String s = sdf.format(d);
 82         return s;
 83     }
 84
 85     public static String getCurDateStr() {
 86         Calendar c = Calendar.getInstance();
 87         c.setTime(new Date());
 88         return c.get(Calendar.YEAR) + "-" + (c.get(Calendar.MONTH) + 1) + "-"
 89                 + c.get(Calendar.DAY_OF_MONTH) + "-"
 90                 + c.get(Calendar.HOUR_OF_DAY) + ":" + c.get(Calendar.MINUTE)
 91                 + ":" + c.get(Calendar.SECOND);
 92     }
 93
 94     /**
 95      * 获得当前日期的字符串格式
 96      *
 97      * @param format
 98      * @return
 99      */
100     public static String getCurDateStr(String format) {
101         Calendar c = Calendar.getInstance();
102         return date2Str(c, format);
103     }
104
105     // 格式到秒
106     public static String getMillon(long time) {
107
108         return new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss").format(time);
109
110     }
111
112     // 格式到天
113     public static String getDay(long time) {
114
115         return new SimpleDateFormat("yyyy-MM-dd").format(time);
116
117     }
118
119     // 格式到毫秒
120     public static String getSMillon(long time) {
121
122         return new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss-SSS").format(time);
123
124     }
125
126
127     /*
128      输入的是String,格式诸如20120102,实现加一天的功能,返回的格式为String,诸如20120103
129      */
130     public static String stringDatePlus(String row) throws ParseException{
131         String year=row.substring(0, 4);
132         String month=row.substring(4,6);
133         String day=row.substring(6);
134         String date1=year+"-"+month+"-"+day;
135         SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
136         Date startDate=sdf.parse(date1);
137         Calendar cd = Calendar.getInstance();
138         cd.setTime(startDate);
139         cd.add(Calendar.DATE, 1);
140         String dateStr =sdf.format(cd.getTime());
141         String year1=dateStr.substring(0,4);
142         String month1=dateStr.substring(5,7);
143         String day1=dateStr.substring(8);
144         return year1+month1+day1;
145     }
146
147     /*
148      输入的是String,格式诸如20120102,实现减一天的功能,返回的格式为String,诸如20120101
149      */
150     public static String stringDateDecrease(String row) throws ParseException{
151         String year=row.substring(0, 4);
152         String month=row.substring(4,6);
153         String day=row.substring(6);
154         String date1=year+"-"+month+"-"+day;
155         SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
156         Date startDate=sdf.parse(date1);
157         Calendar cd = Calendar.getInstance();
158         cd.setTime(startDate);
159         cd.add(Calendar.DATE, -1);
160         String dateStr =sdf.format(cd.getTime());
161         String year1=dateStr.substring(0,4);
162         String month1=dateStr.substring(5,7);
163         String day1=dateStr.substring(8);
164         return year1+month1+day1;
165     }
166
167     /*
168      输入的格式为String,诸如20120101,返回的格式为String,诸如2012-01-01
169      */
170     public static String stringDateChange(String date)
171     {
172         if(date.length()=="20120101".length()){
173             String year=date.substring(0, 4);
174             String month=date.substring(4,6);
175             String day=date.substring(6);
176             return year+"-"+month+"-"+day;
177         }else{
178             return date;
179         }
180
181
182     }
183     /**
184      * 日期向后推一天
185      * @param date 格式:20120101
186      * @return  20120102
187      */
188     public static String tonextday(String date){
189         int year = Integer.parseInt(date.substring(0,4));
190         int month = Integer.parseInt(date.substring(4,6));
191         int day = Integer.parseInt(date.substring(6));
192         Calendar calendar = Calendar.getInstance();
193         calendar.set(year, month-1, day+1);
194         Date newdate = calendar.getTime();
195         SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
196         String da = format.format(newdate);
197         return da;
198     }
199
200     /**
201      * 获取当前日期上一周的开始日期 (周日)
202      */
203     public static String previousWeekByDate(String date) {
204         int year = Integer.parseInt(date.substring(0,4));
205         int month = Integer.parseInt(date.substring(4,6));
206         int day = Integer.parseInt(date.substring(6));
207         Calendar calendar = Calendar.getInstance();
208         calendar.set(year, month-1, day);
209         Date newdate = calendar.getTime();
210         SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd");
211         Calendar cal = Calendar.getInstance();
212         cal.setTime(newdate);
213         int dayWeek = cal.get(Calendar.DAY_OF_WEEK);//获得当前日期是一个星期的第几天
214         if(1 == dayWeek) {
215             cal.add(Calendar.DAY_OF_MONTH, -1);
216         }
217         cal.setFirstDayOfWeek(Calendar.SUNDAY);//设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一
218         int s = cal.get(Calendar.DAY_OF_WEEK);//获得当前日期是一个星期的第几天
219         cal.add(Calendar.DATE, cal.getFirstDayOfWeek()-s);//根据日历的规则,给当前日期减往星期几与一个星期第一天的差值
220         cal.add(Calendar.WEEK_OF_YEAR, -1);
221         String imptimeBegin = sdf.format(cal.getTime());
222 //      System.out.println("所在周星期日的日期:"+imptimeBegin);
223         return imptimeBegin;
224     }
225
226
227     /**
228      * 获取当前日期上一周的结束日期 (周六)
229      */
230     public static String previousWeekEndDayByDate(String date) {
231         int year = Integer.parseInt(date.substring(0,4));
232         int month = Integer.parseInt(date.substring(4,6));
233         int day = Integer.parseInt(date.substring(6));
234         Calendar calendar = Calendar.getInstance();
235         calendar.set(year, month-1, day);
236         Date newdate = calendar.getTime();
237         SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd");
238         Calendar cal = Calendar.getInstance();
239         cal.setTime(newdate);
240         int dayWeek = cal.get(Calendar.DAY_OF_WEEK);//获得当前日期是一个星期的第几天
241         if(1 == dayWeek) {
242             cal.add(Calendar.DAY_OF_MONTH, -1);
243         }
244         cal.setFirstDayOfWeek(Calendar.SUNDAY);//设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一
245         int s = cal.get(Calendar.DAY_OF_WEEK);//获得当前日期是一个星期的第几天
246         cal.add(Calendar.DATE, cal.getFirstDayOfWeek()+(6-s));
247         cal.add(Calendar.WEEK_OF_YEAR, -1);
248         String imptimeBegin = sdf.format(cal.getTime());
249 //      System.out.println("星期六的日期:"+imptimeBegin);
250         return imptimeBegin;
251     }
252
253
254     /**
255      * 获取当前日期当前一周的开始日期 (周日)
256      */
257     public static String getCurrentWeekFirstDayByDate(String date) {
258         int year = Integer.parseInt(date.substring(0,4));
259         int month = Integer.parseInt(date.substring(4,6));
260         int day = Integer.parseInt(date.substring(6));
261         Calendar calendar = Calendar.getInstance();
262         calendar.set(year, month-1, day);
263         Date newdate = calendar.getTime();
264         SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd");
265         Calendar cal = Calendar.getInstance();
266         cal.setTime(newdate);
267         int dayWeek = cal.get(Calendar.DAY_OF_WEEK);//获得当前日期是一个星期的第几天
268         if(1 == dayWeek) {
269             cal.add(Calendar.DAY_OF_MONTH, -1);
270         }
271         cal.setFirstDayOfWeek(Calendar.SUNDAY);//设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一
272         int s = cal.get(Calendar.DAY_OF_WEEK);//获得当前日期是一个星期的第几天
273         cal.add(Calendar.DATE, cal.getFirstDayOfWeek()-s);//根据日历的规则,给当前日期减往星期几与一个星期第一天的差值
274
275         String imptimeBegin = sdf.format(cal.getTime());
276         //  System.out.println("所在周星期日的日期:"+imptimeBegin);
277         return imptimeBegin;
278     }
279     /**
280      * 获取当前日期当前一周的结束日期 (周六)
281      */
282     public static String getCurrentWeekEndDayByDate(String date) {
283         int year = Integer.parseInt(date.substring(0,4));
284         int month = Integer.parseInt(date.substring(4,6));
285         int day = Integer.parseInt(date.substring(6));
286         Calendar calendar = Calendar.getInstance();
287         calendar.set(year, month-1, day);
288         Date newdate = calendar.getTime();
289         SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd");
290         Calendar cal = Calendar.getInstance();
291         cal.setTime(newdate);
292         int dayWeek = cal.get(Calendar.DAY_OF_WEEK);//获得当前日期是一个星期的第几天
293         if(1 == dayWeek) {
294             cal.add(Calendar.DAY_OF_MONTH, -1);
295         }
296         cal.setFirstDayOfWeek(Calendar.SUNDAY);//设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一
297         int s = cal.get(Calendar.DAY_OF_WEEK);//获得当前日期是一个星期的第几天
298         cal.add(Calendar.DATE, cal.getFirstDayOfWeek()+(6-s));
299
300         String imptimeBegin = sdf.format(cal.getTime());
301         return imptimeBegin;
302     }
303
304
305     /**
306      * 返回上一个月的第一天
307      * @param date20120304
308      * @return  20120201
309      */
310     public static String previousMonthByDate(String date) {
311         // TODO Auto-generated method stub
312         int year = Integer.parseInt(date.substring(0,4));
313         int month = Integer.parseInt(date.substring(4,6));
314         int day = Integer.parseInt(date.substring(6));
315         Calendar calendar = Calendar.getInstance();
316         calendar.set(year, month-2, 1);
317         Date newdate = calendar.getTime();
318         SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd");
319         Calendar cal = Calendar.getInstance();
320         cal.setTime(newdate);
321         String imptimeBegin = sdf.format(cal.getTime());
322 //      System.out.println(imptimeBegin);
323         return imptimeBegin;
324     }
325
326     /**
327      * 返回下一个月的第一天
328      * @param date20120304
329      * @return  20120401
330      */
331     public static String nextMonthByDate(String date) {
332         // TODO Auto-generated method stub
333         int year = Integer.parseInt(date.substring(0,4));
334         int month = Integer.parseInt(date.substring(4,6));
335         int day = Integer.parseInt(date.substring(6));
336         Calendar calendar = Calendar.getInstance();
337         calendar.set(year, month, 1);
338         Date newdate = calendar.getTime();
339         SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd");
340         Calendar cal = Calendar.getInstance();
341         cal.setTime(newdate);
342         String imptimeBegin = sdf.format(cal.getTime());
343 //      System.out.println(imptimeBegin);
344         return imptimeBegin;
345     }
346     /**
347      * 返回当前月的第一天
348      * @param date20120103
349      * @return 20120101
350      */
351     public static String getCurrentMonthFirstDayByDate(String date) {
352         int year = Integer.parseInt(date.substring(0,4));
353         int month = Integer.parseInt(date.substring(4,6));
354         int day = Integer.parseInt(date.substring(6));
355         Calendar calendar = Calendar.getInstance();
356         calendar.set(year, month-1, 1);
357         Date newdate = calendar.getTime();
358         SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMdd");
359         Calendar cal = Calendar.getInstance();
360         cal.setTime(newdate);
361         String imptimeBegin = sdf.format(cal.getTime());
362         return imptimeBegin;
363     }
364
365 }
时间: 2024-08-29 19:22:08

Android 开发笔记___DateUtil——Time的相关文章

Android开发笔记(一百零三)地图与定位SDK

集成地图SDK 国内常用的地图SDK就是百度和高德了,二者的用法大同小异,可按照官网上的开发指南一步步来.下面是我在集成地图SDK时遇到的问题说明: 1.点击基本地图功能选项,不能打开地图,弹出"key验证出错!请在AndroidManifest.xml文件中检查key设置的"的红色字提示.查看日志提示"galaxy lib host missing meta-data,make sure you know the right way to integrate galaxy&

[APP] Android 开发笔记 003

接上节 [APP] Android 开发笔记 002 5. 使用ant release 打包 1)制作 密钥文件 release.keystore (*.keystore) keytool -genkey -v -keystore "release.keystore" -alias "release" -keyalg "RSA" -validity "10000" 这里需要注意的是: -keystore "relea

《ArcGIS Runtime SDK for Android开发笔记》——(10)、ArcGIS Runtime SDK支持的空间数据类型

1.前言 移动端的数据来源非常重要,它决定了移动端功能的实现.早期的ArcGIS Android API中,主要以接入在线的数据源为主,因此主要实现在线的地图浏览.查询和路径分析.地理处理等从操作:在v1.0.1版本中,ArcGIS移动产品第一次可以加载松散型切片,自此逐渐掀开了对本地离线数据源的支持,也因此可以在移动端实现越来越受欢迎的离线功能.现在最新的10.2.7 API离线支持数据主要包括紧凑型切片.tpk切片包..geodatabase..shp文件.地名地址库.网络数据集. 转载请注

Android开发笔记--hello world 和目录结构

原文:Android开发笔记--hello world 和目录结构 每接触一个新东西 都有一个hello world的例子. 1.新建项目 2.配置AVD AVD 没有要新建个,如果不能创建 运行SDK Manager更新 3.接着运行就可以了 第一次启动要1分多钟 不要关 4.添加代码 5.接着在运行就OK了 目录结构 1.src - 用于放置源程序 2.gen - 自动生成 R.java 文件,用于引用资源文件(即 res 目录下的数据) 3.assets - 用于放置原始文件,Androi

Android开发笔记(一百一十六)网络学习资源

知名网站 本系列的开发笔记,对Android开发来说只是沧海一瓢,还有更多的技术等待我们去汲取.下面列出几个常用的开发网站,供初学者上路: 首先当然是国内首屈一指的技术网站csdn啦,csdn提供了众多频道,包括博客.论坛.下载.问答等等,其中博客专栏提供了最新的技术文章,值得推荐.csdn博客专栏的地址是 http://blog.csdn.net/column.html 下面是csdn博客专栏的网页截图: 其次是国外有名的开源网站GitHub,这里有众多的开源项目源码,是开发者分享代码的乐园.

Android开发笔记(八十八)同步与加锁

同步synchronized 同步方法 synchronized可用来给方法或者代码块加锁,当它修饰一个方法或者一个代码块的时候,同一时刻最多只有一个线程执行这段代码.这就意味着,当两个并发线程同时访问synchronized代码块时,两个线程只能是排队做串行处理,另一个线程要等待前一个线程执行完该代码块后,才能再次执行synchronized代码块. 使用synchronized修饰某个方法,该方法便成为一个同步方法,在同一时刻只能有一个线程执行该方法.可是,synchronized的锁机制太

android开发笔记1

1.强制横屏,不能转屏 在AndroidManifest中需要的activity里: <application android:icon="@drawable/ic_launcher" android:label="@string/app_name">   <activity android:name=".GestureFlip"     android:label="@string/app_name"   

ANDROID开发笔记(二)

动机: 开发的一个背单词的软件. 不会实现划屏的特性. 方法: 第一步尝试: 在MainActivity中, 增加以下代码后, 如果在视图的空白处点击时, 文本框中的时间就会发生改变. @Override     public boolean onTouchEvent(MotionEvent event) {         // TODO Auto-generated method stub         final TextView textview = (TextView)findVie

ANDROID开发笔记(一)

manifest, 英['m?n?fest] vt. 显示,表明;证明;使显现 adj. 明白的,明显的 n. 货单,旅客名单 wrap_content, 根据实际内容调整   原来新版的ADB已经支持无线连接了,这样对于我经常使用ADB安装软件的用户可谓是一大福音,这意味着91助手.腕豆夹这类的软件估计在不久的将来也能支持这个功能了,当然前提是你必须下载ADB(PC)软件,另外在手机侧你需要安装一款ADB wireless widget这个插件.使用方法: 1. 先在手机上执行adb wire