android时间戳转换成日期(与php后台),日期转换成时间戳小问题记录

Posted 骑鲸鱼的企鹅

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android时间戳转换成日期(与php后台),日期转换成时间戳小问题记录相关的知识,希望对你有一定的参考价值。

之前常用的是,和java开发的后台对接数据,正常也没有遇到过这个问题,又一次在和php对接的后台做项目是,时间转换出了问题,我看了些许时间的代码,都没有问题。最后发现返回时间戳的位数不对,才确认到,问题是出现在这里

PHP和Java时间戳存在三位位差!!!

所以,在工具类里面,对于接收服务器的时间戳,转换之前,添加了一个判断,以方便“以防万一”。

代码块:

   public static String getFetureDate(long expire) 
        //PHP和Java时间戳存在三位位差,用000补齐
        if (String.valueOf(expire).length() == 10) 
            expire = expire * 1000;
        
        Date date = new Date(expire);
        SimpleDateFormat format = new SimpleDateFormat("MM月dd日");
        String result = format.format(date);
        if (result.startsWith("0")) 
            result = result.substring(1);
        
        return result;
    

以上,则可以列为常用时间转换的工具类里的常用方法。
至于其他的时间转换格式方法,附上一个网络上“遍地都是”的工具类一份也方便大家使用。

// by zhenqi  http://blog.csdn.net/w630886916 
public class DateUtils   

    public static String getTodayDateTime()   
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss",  
                Locale.getDefault());  
        return format.format(new Date());  
      

    /** 
     * 掉此方法输入所要转换的时间输入例如("2014年06月14日16时09分00秒")返回时间戳 
     *  
     * @param time 
     * @return 
     */  
    public String data(String time)   
        SimpleDateFormat sdr = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒",  
                Locale.CHINA);  
        Date date;  
        String times = null;  
        try   
            date = sdr.parse(time);  
            long l = date.getTime();  
            String stf = String.valueOf(l);  
            times = stf.substring(0, 10);  
         catch (Exception e)   
            e.printStackTrace();  
          
        return times;  
      

    public static String getTodayDateTimes()   
        SimpleDateFormat format = new SimpleDateFormat("MM月dd日",  
                Locale.getDefault());  
        return format.format(new Date());  
      

    /** 
     * 获取当前时间 
     *  
     * @return 
     */  
    public static String getCurrentTime_Today()   
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");  
        return sdf.format(new java.util.Date());  
      

    /** 
     * 调此方法输入所要转换的时间输入例如("2014-06-14-16-09-00")返回时间戳 
     *  
     * @param time 
     * @return 
     */  
    public static String dataOne(String time)   
        SimpleDateFormat sdr = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss",  
                Locale.CHINA);  
        Date date;  
        String times = null;  
        try   
            date = sdr.parse(time);  
            long l = date.getTime();  
            String stf = String.valueOf(l);  
            times = stf.substring(0, 10);  
         catch (Exception e)   
            e.printStackTrace();  
          
        return times;  
      

    public static String getTimestamp(String time, String type)   
        SimpleDateFormat sdr = new SimpleDateFormat(type, Locale.CHINA);  
        Date date;  
        String times = null;  
        try   
            date = sdr.parse(time);  
            long l = date.getTime();  
            String stf = String.valueOf(l);  
            times = stf.substring(0, 10);  
         catch (Exception e)   
            e.printStackTrace();  
          
        return times;  
      

    /** 
     * 调用此方法输入所要转换的时间戳输入例如(1402733340)输出("2014年06月14日16时09分00秒") 
     *  
     * @param time 
     * @return 
     */  
    public static String times(String time)   
        SimpleDateFormat sdr = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒");  
        @SuppressWarnings("unused")  
        long lcc = Long.valueOf(time);  
        int i = Integer.parseInt(time);  
        String times = sdr.format(new Date(i * 1000L));  
        return times;  

      

    /** 
     * 调用此方法输入所要转换的时间戳输入例如(1402733340)输出("2014-06-14  16:09:00") 
     *  
     * @param time 
     * @return 
     */  
    public static String timedate(String time)   
        SimpleDateFormat sdr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
        @SuppressWarnings("unused")  
        long lcc = Long.valueOf(time);  
        int i = Integer.parseInt(time);  
        String times = sdr.format(new Date(i * 1000L));  
        return times;  

      

    /** 
     * 调用此方法输入所要转换的时间戳输入例如(1402733340)输出("2014年06月14日16:09") 
     *  
     * @param time 
     * @return 
     */  
    public static String timet(String time)   
        SimpleDateFormat sdr = new SimpleDateFormat("yyyy年MM月dd日  HH:mm");  
        @SuppressWarnings("unused")  
        long lcc = Long.valueOf(time);  
        int i = Integer.parseInt(time);  
        String times = sdr.format(new Date(i * 1000L));  
        return times;  

      

    /** 
     * @param time斜杠分开 
     * @return 
     */  
    public static String timeslash(String time)   
        SimpleDateFormat sdr = new SimpleDateFormat("yyyy/MM/dd,HH:mm");  
        @SuppressWarnings("unused")  
        long lcc = Long.valueOf(time);  
        int i = Integer.parseInt(time);  
        String times = sdr.format(new Date(i * 1000L));  
        return times;  

      

    /** 
     * @param time斜杠分开 
     * @return 
     */  
    public static String timeslashData(String time)   
        SimpleDateFormat sdr = new SimpleDateFormat("yyyy/MM/dd");  
        @SuppressWarnings("unused")  
        long lcc = Long.valueOf(time);  
//      int i = Integer.parseInt(time);  
        String times = sdr.format(new Date(lcc * 1000L));  
        return times;  

      

    /** 
     * @param time斜杠分开 
     * @return 
     */  
    public static String timeMinute(String time)   
        SimpleDateFormat sdr = new SimpleDateFormat("HH:mm");  
        @SuppressWarnings("unused")  
        long lcc = Long.valueOf(time);  
        int i = Integer.parseInt(time);  
        String times = sdr.format(new Date(i * 1000L));  
        return times;  

      

    public static String tim(String time)   
        SimpleDateFormat sdr = new SimpleDateFormat("yyyyMMdd HH:mm");  
        @SuppressWarnings("unused")  
        long lcc = Long.valueOf(time);  
        int i = Integer.parseInt(time);  
        String times = sdr.format(new Date(i * 1000L));  
        return times;  
      

    public static String time(String time)   
        SimpleDateFormat sdr = new SimpleDateFormat("yyyy-MM-dd HH:mm");  
        @SuppressWarnings("unused")  
        long lcc = Long.valueOf(time);  
        int i = Integer.parseInt(time);  
        String times = sdr.format(new Date(i * 1000L));  
        return times;  
      

    // 调用此方法输入所要转换的时间戳例如(1402733340)输出("2014年06月14日16时09分00秒")  
    public static String times(long timeStamp)   
        SimpleDateFormat sdr = new SimpleDateFormat("MM月dd日  #  HH:mm");  
        return sdr.format(new Date(timeStamp)).replaceAll("#",  
                getWeek(timeStamp));  

      

    private static String getWeek(long timeStamp)   
        int mydate = 0;  
        String week = null;  
        Calendar cd = Calendar.getInstance();  
        cd.setTime(new Date(timeStamp));  
        mydate = cd.get(Calendar.DAY_OF_WEEK);  
        // 获取指定日期转换成星期几  
        if (mydate == 1)   
            week = "周日";  
         else if (mydate == 2)   
            week = "周一";  
         else if (mydate == 3)   
            week = "周二";  
         else if (mydate == 4)   
            week = "周三";  
         else if (mydate == 5)   
            week = "周四";  
         else if (mydate == 6)   
            week = "周五";  
         else if (mydate == 7)   
            week = "周六";  
          
        return week;  
      

    // 并用分割符把时间分成时间数组  
    /** 
     * 调用此方法输入所要转换的时间戳输入例如(1402733340)输出("2014-06-14-16-09-00") 
     *  
     * @param time 
     * @return 
     */  
    public String timesOne(String time)   
        SimpleDateFormat sdr = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");  
        @SuppressWarnings("unused")  
        long lcc = Long.valueOf(time);  
        int i = Integer.parseInt(time);  
        String times = sdr.format(new Date(i * 1000L));  
        return times;  

      

    public static String timesTwo(String time)   
        SimpleDateFormat sdr = new SimpleDateFormat("yyyy-MM-dd");  
        @SuppressWarnings("unused")  
        long lcc = Long.valueOf(time);  
        int i = Integer.parseInt(time);  
        String times = sdr.format(new Date(i * 1000L));  
        return times;  

      

    /** 
     * 并用分割符把时间分成时间数组 
     *  
     * @param time 
     * @return 
     */  
    public static String[] timestamp(String time)   
        SimpleDateFormat sdr = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒");  
        @SuppressWarnings("unused")  
        long lcc = Long.valueOf(time);  
        int i = Integer.parseInt(time);  
        String times = sdr.format(new Date(i * 1000L));  
        String[] fenge = times.split("[年月日时分秒]");  
        return fenge;  
      

    /** 
     * 根据传递的类型格式化时间 
     *  
     * @param str 
     * @param type 
     *            例如:yy-MM-dd 
     * @return 
     */  
    public static String getDateTimeByMillisecond(String str, String type)   

        Date date = new Date(Long.valueOf(str));  

        SimpleDateFormat format = new SimpleDateFormat(type);  

        String time = format.format(date);  

        return time;  
      

    /** 
     * 分割符把时间分成时间数组 
     *  
     * @param time 
     * @return 
     */  
    public String[] division(String time)   

        String[] fenge = time.split("[年月日时分秒]");  

        return fenge;  

      

    /** 
     * 输入时间戳变星期 
     *  
     * @param time 
     * @return 
     */  
    public static String changeweek(String time)   
        SimpleDateFormat sdr = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒");  
        long lcc = Long.valueOf(time);  
        int i = Integer.parseInt(time);  
        String times = sdr.format(new Date(i * 1000L));  
        Date date = null;  
        int mydate = 0;  
        String week = null;  
        try   
            date = sdr.parse(times);  
            Calendar cd = Calendar.getInstance();  
            cd.setTime(date);  
            mydate = cd.get(Calendar.DAY_OF_WEEK);  
            // 获取指定日期转换成星期几  
         catch (Exception e)   
            // TODO Auto-generated catch block  
            e.printStackTrace();  
          
        if (mydate == 1)   
            week = "星期日";  
         else if (mydate == 2)   
            week = "星期一";  
         else if (mydate == 3)   
            week = "星期二";  
         else if (mydate == 4)   
            week = "星期三";  
         else if (mydate == 5)   
            week = "星期四";  
         else if (mydate == 6)   
            week = "星期五";  
         else if (mydate == 7)   
            week = "星期六";  
          
        return week;  

      

    /** 
     * 获取日期和星期 例如:2014-11-13 11:00 星期一 
     *  
     * @param time 
     * @param type 
     * @return 
     */  
    public static String getDateAndWeek(String time, String type)   
        return getDateTimeByMillisecond(time + "000", type) + "  "  
                + changeweekOne(time);  
      

    /** 
     * 输入时间戳变星期 
     *  
     * @param time 
     * @return 
     */  
    public static String changeweekOne(String time)   
        SimpleDateFormat sdr = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");  
        long lcc = Long.valueOf(time);  
        int i = Integer.parseInt(time);  
        String times = sdr.format(new Date(i * 1000L));  
        Date date = null;  
        int mydate = 0;  
        String week = null;  
        try   
            date = sdr.parse(times);  
            Calendar cd = Calendar.getInstance();  
            cd.setTime(date);  
            mydate = cd.get(Calendar.DAY_OF_WEEK);  
            // 获取指定日期转换成星期几  
         catch (Exception e)   
            // TODO Auto-generated catch block  
            e.printStackTrace();  
          
        if (mydate == 1)   
            week = "星期日";  
         else if (mydate == 2)   
            week = "星期一";  
         else if (mydate == 3)   
            week = "星期二";  
         else if (mydate == 4)   
            week = "星期三";  
         else if (mydate == 5)   
            week = "星期四";  
         else if (mydate == 6)   
            week = "星期五";  
         else if (mydate == 7)   
            week = "星期六";  
          
        return week;  

      

    /** 
     * 获取当前时间 
     *  
     * @return 
     */  
    public static String getCurrentTime()   
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");  
        return sdf.format(new java.util.Date());  
      

    /** 
     * 输入日期如(2014年06月14日16时09分00秒)返回(星期数) 
     *  
     * @param time 
     * @return 
     */  
    public String week(String time)   
        Date date = null;  
        SimpleDateFormat sdr = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒");  
        int mydate = 0;  
        String week = null;  
        try   
            date = sdr.parse(time);  
            Calendar cd = Calendar.getInstance();  
            cd.setTime(date);  
            mydate = cd.get(Calendar.DAY_OF_WEEK);  
            // 获取指定日期转换成星期几  
         catch (Exception e)   
            // TODO Auto-generated catch block  
            e.printStackTrace();  
          
        if (mydate == 1)   
            week = "星期日";  
         else if (mydate == 2)   
            week = "星期一";  
         else if (mydate == 3)   
            week = "星期二";  
         else if (mydate == 4)   
            week = "星期三";  
         else if (mydate == 5)   
            week = "星期四";  
         else if (mydate == 6)   
            week = "星期五";  
         else if (mydate == 7)   
            week = "星期六";  
          
        return week;  
      

    /** 
     * 输入日期如(2014-06-14-16-09-00)返回(星期数) 
     *  
     * @param time 
     * @return 
     */  
    public String weekOne(String time)   
        Date date = null;  
        SimpleDateFormat sdr = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");  
        int mydate = 0;  
        String week = null;  
        try   
            date = sdr.parse(time);  
            Calendar cd = Calendar.getInstance();  
            cd.setTime(date);  
            mydate = cd.get(Calendar.DAY_OF_WEEK);  
            // 获取指定日期转换成星期几  
         catch (Exception e)   
            // TODO Auto-generated catch block  
            e.printStackTrace();  
          
        if (mydate == 1)   
            week = "星期日";  
         else if (mydate == 2)   
            week = "星期一";  
         else if (mydate == 3)   
            week = "星期二";  
         else if (mydate == 4)   
            week = "星期三";  
         else if (mydate == 5)   
            week = "星期四";  
         else if (mydate == 6)   
            week = "星期五";  
         else if (mydate == 7)   
            week = "星期六";  
          
        return week;  
      
  

Demo就不写了,直接创建类,粘贴复制即可。

以上是关于android时间戳转换成日期(与php后台),日期转换成时间戳小问题记录的主要内容,如果未能解决你的问题,请参考以下文章

使用JS,时间戳数值怎么转换成日期

android怎么把时间戳转换成小时

PHP 日期与时间

php怎么把中文日期转换成时间戳

如何将android时间戳转换成时间

PHP时间戳与日期的相互转换