美文网首页
Android 日常开发过程中日期时间处理

Android 日常开发过程中日期时间处理

作者: 张鱼的故事 | 来源:发表于2017-01-22 19:31 被阅读0次

    开发中,难免要对一些日期数据进行处理,下面一些方法仅供参考

    一、常用日期常量

    1.一天的时间  毫秒数表示  public static final long ONE_DAY_MILLIS = 24 * 60 * 60 * 1000;

    2.一个小时    毫秒数表示   public static final long ONE_HOUR_MILLIS = 60 * 60 * 1000;

    3.一分钟        毫秒表示       public static final long ONE_MINUTE_MILLIS = 60 * 1000;

    二、常用格式方法

    A.日期格式化问题

    1.格式成xx月xx日

    public static String formatDayDate(long time) {

    SimpleDateFormat formatDay = new SimpleDateFormat("MM月dd日",

    Locale.getDefault());

    Date date = new Date(time);

    return formatDay.format(date);

    }

    2.格式化成xxxx年-xx月xx日

    public static String formatYYMMDD(long time) {

    Date date = new Date(time);

    SimpleDateFormat formatDay = new SimpleDateFormat("yyyy-MM-dd",

    Locale.getDefault());

    String day = formatDay.format(date);

    return day;

    }

    总结: 对日期进行格式这里传染的是时间的毫秒值 然后对毫秒值进行格式化  根据不同需要输入对应格式化字符串即可

    eg:"yyyy-MM-dd"、"yyyy/MM/dd HH:mm" 、"yyyy/MM/dd HH:mm" etc.另外需要注意的是 时间的显示问题HH是获取24小时制的  hh是获取12小时制的

    B.常用方法工具

    a.获取当前年份

    //先获取当前系统时间 然后格式化成年份  得到年份的string类型的字符串  转换成int即可(你想要String 更改下返回值类型)

    public static int getCurrentYear() {

    long time = System.currentTimeMillis();

    Date date = new Date(time);

    //获取当前年份

    SimpleDateFormat formatDay = new SimpleDateFormat("yyyy",Locale.getDefault());

    //获取当前月份

    //SimpleDateFormat formatDay = new SimpleDateFormat("MM",Locale.getDefault());

    //获取当天

    //SimpleDateFormat formatDay = new SimpleDateFormat("dd", Locale.getDefault());

    String year = formatDay.format(date);

    int result = Integer.parseInt(year);

    return result;

    }

    b.获取当前系统时间

    1.public static String getCurrentTime(){

    long currentTimeMillis = System.currentTimeMillis();

    return formatYYMMDD(currentTimeMillis);//A 2方法

    }

    2. public static String getNowDate() {

    long time = new Date().getTime();

    return String.valueOf(time);

    }

    c.这个方法厉害了 (哈哈 )

    //对传入时间进行处理 根据对应的情况返回不同的需要的用来展示的字符串 方法不难 有详细的注释

    public static String formatConversationDate(long time) {

    // 系统当前时间

    Date currentTime = new Date();

    Date targetTime = new Date(time);

    // 返回的时间

    String formatTime = "";

    // 按照年月日格式化

    SimpleDateFormat formatDay = new SimpleDateFormat("yyyy-MM-dd",

    Locale.getDefault());

    // 年

    SimpleDateFormat formatYear = new SimpleDateFormat("yyyy",

    Locale.getDefault());

    // 计算在一年中的第几天

    SimpleDateFormat formatDayOfYear = new SimpleDateFormat("DD",

    Locale.getDefault());

    String currentDay = formatDay.format(currentTime);

    String targetDay = formatDay.format(targetTime);

    String currentYear = formatYear.format(currentTime);

    String targetYear = formatYear.format(targetTime);

    if (currentDay.equals(targetDay)) {

    // 判断是否当天

    SimpleDateFormat sdf = new SimpleDateFormat("HH:mm",

    Locale.getDefault());

    formatTime = sdf.format(targetTime);

    return "今天 " + formatTime;

    } else if (currentYear.equals(targetYear)) {

    // 同年

    int currentDayOfYear = Integer.parseInt(formatDayOfYear

    .format(currentTime));

    int targetDayOfYear = Integer.parseInt(formatDayOfYear

    .format(targetTime));

    // 判断是否昨天

    if (currentDayOfYear - 1 == targetDayOfYear) {

    SimpleDateFormat sdf = new SimpleDateFormat("HH:mm",

    Locale.getDefault());

    formatTime = sdf.format(targetTime);

    return "昨天 " + formatTime;

    } else {

    // 同年同月不同天,返回月日

    SimpleDateFormat sdf = new SimpleDateFormat("MM-dd   HH:mm",

    Locale.getDefault());

    formatTime = sdf.format(targetTime);

    }

    } else {

    // 隔年

    SimpleDateFormat format = new SimpleDateFormat(

    "yyyy-MM-dd   HH:mm", Locale.getDefault());

    formatTime = format.format(targetTime);

    }

    return formatTime;

    }

    d.获取当天为今年的第多少天

    //DBug 是我自己封装的一个log工具类  可以替换成自己的 或者改用系统的Log

    public static int getCurrentDayOfYear(String time) {

    Calendar calendar = getCalenar(time);

    DBug.i(TAG,

    "月:" + calendar.get(Calendar.YEAR) + "*** 日 = "

    + calendar.get(Calendar.DAY_OF_YEAR));

    return calendar.get(Calendar.DAY_OF_YEAR);

    }

    e.获取指定日期的时间毫秒值

    //获取 2016-08-24 的毫秒值方法

    1.public static long getDateLongMils(String timeStr) {

    String moth = "";

    String d = "";

    if (!TextUtils.isEmpty(timeStr)) {

    try {

    int year = Integer.parseInt(timeStr.split("-")[0]);

    int month = Integer.parseInt(timeStr.split("-")[1]);

    int day = Integer.parseInt(timeStr.split("-")[2]);

    if (month < 10) {

    moth = "0" + month;

    } else {

    moth = "" + month;

    }

    if (day < 10) {

    d = "0" + day;

    } else {

    d = day + "";

    }

    String date = year + "" + moth + "" + d + "";

    DBug.i(TAG, date);

    SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");

    long millionSeconds = sdf.parse(date).getTime();

    DBug.i(TAG, "转换后的毫秒值:" + millionSeconds);

    return millionSeconds;

    } catch (ParseException e) {

    e.printStackTrace();

    DBug.e(TAG, "ParseException:" + e.toString());

    }// 毫秒

    }

    return 0;

    }

    //获取2017年1月24日 的毫秒值

    2.public static long getTimeLongMils(String timeStr) {

    String moth = "";

    String d = "";

    if (!TextUtils.isEmpty(timeStr)) {

    try {

    // 将初始日期时间2012年07月02日 16:45 拆分成年 月 日 时 分 秒

    String dates = CommonUtilty.spliteString(timeStr, "日", "index",

    "front"); // 日期

    String yearStr = CommonUtilty.spliteString(dates, "年", "index",

    "front"); // 年份

    String monthAndDay = CommonUtilty.spliteString(dates, "年",

    "index", "back"); // 月日

    String monthStr = CommonUtilty.spliteString(monthAndDay, "月",

    "index", "front"); // 月

    String dayStr = CommonUtilty.spliteString(monthAndDay, "月",

    "index", "back"); // 日

    DBug.i(TAG, "yearStr == " + yearStr + "***monthStr == "

    + monthStr + "***dayStr == " + dayStr);

    int year = Integer.parseInt(yearStr);

    int month = Integer.parseInt(monthStr);

    int day = Integer.parseInt(dayStr);

    if (month < 10) {

    moth = "0" + month;

    } else {

    moth = "" + month;

    }

    if (day < 10) {

    d = "0" + day;

    } else {

    d = day + "";

    }

    String date = year + "" + moth + "" + d + "";

    DBug.i(TAG, date);

    SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");

    long millionSeconds = sdf.parse(date).getTime();

    DBug.i(TAG, "转换后的毫秒值:" + millionSeconds);

    return millionSeconds;

    } catch (ParseException e) {

    e.printStackTrace();

    DBug.e(TAG, "ParseException:" + e.toString());

    }// 毫秒

    }

    return 0;

    }

    f.结束时间是否大于开始时间

    public static boolean isRightDate(String endDate, String startDate) {

    try {

    if (!TextUtils.isEmpty(endDate) && !TextUtils.isEmpty(startDate)) {

    long end = getTimeLongMils(endDate);

    long start = getTimeLongMils(startDate);

    if ((end - start) > 0) {

    return true;

    } else {

    return false;

    }

    } else {

    }

    } catch (Exception e) {

    }

    return false;

    }

    总结 :这是本人项目开发中用到的方法 归类总结,有些方法不是最优,有不足之处  还望指正。

    PS: 遗留一个讨论的问题吧  这个方法你 觉得对吗 与上面的方法Be2方法相比 有什么优劣?

    public static long getTimeLongMils(Strings) {

    //String s="2016年12月9日";

    int n_pos=s.indexOf('u5e74');

    int y_pos=s.indexOf('u6708');

    int r_pos=s.indexOf('u65e5');

    int n_int=Integer.valueOf(s.substring(0,n_pos)).intValue();

    int y_int=Integer.valueOf(s.substring(n_pos+1,y_pos)).intValue();

    int r_int=Integer.valueOf(s.substring(y_pos+1,r_pos)).intValue();

    java.text.DateFormat formatter = new java.text.SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

    java.sql.Timestamp stime=new java.sql.Timestamp(n_int-1900,y_int-1,r_int,0,0,0,0);

    System.out.println("timestamp = " +stime);

    System.out.println("format time= " + formatter.format(stime));

    System.out.println("format time millis= " + formatter.format(stime.getTime()));

    System.out.println("millis = " + stime.getTime());

    }

    相关文章

      网友评论

          本文标题:Android 日常开发过程中日期时间处理

          本文链接:https://www.haomeiwen.com/subject/xguobttx.html