本帖最后由 ainiyidiandian 于 2011-07-18 10:18:48 编辑

解决方案 »

  1.   

    自己写的检测时间的代码 可以根据格式自己选择。  希望可以帮到你噢!!public class DateTime {
    private static SimpleDateFormat hmSdf = new SimpleDateFormat("HH");
    private static SimpleDateFormat mdSdf = new SimpleDateFormat(":mm");
    private static SimpleDateFormat ymdSdf = new SimpleDateFormat("yyyy-MM-dd");
    private static SimpleDateFormat yearSdf = new SimpleDateFormat("yyyy");
    private static SimpleDateFormat mmsdf = new SimpleDateFormat("MM");
    private static SimpleDateFormat ddsdf = new SimpleDateFormat("dd");
    public static int getTimestamp() {
    return (int)(System.currentTimeMillis()/1000);
        }

    public static String getDateString(){
    return getDateTimeStringFormat("yyyy-MM-dd");
    }

    public static String getDateTimeString(){
    return getDateTimeStringFormat("yyyy-MM-dd kk:mm:ss");
    }

    public static String getDateTimeStringFormat(String dateFormat){
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat(dateFormat);
    Date date = new Date();
    return simpleDateFormat.format(date);
    }
    }

      

  2.   

    谢谢~~你使用这个SimpleDateFormat simpleDateFormat = new SimpleDateFormat(dateFormat);
    在时间格式化的时候时区还是会影响格式化后的值的~~
      

  3.   

    你要不影响直接拆再加起来不就可以了                String s="20080105";
            Pattern p = Pattern.compile("(\\d{4})(\\d{2})(\\d{2})");
            Matcher m = p.matcher(s);
            while (m.find()) {
                  System.out.println(m.group(1)+"-"+m.group(2)+"-"+m.group(3)) ;
            }或用substring(start, end)
      

  4.   

    private CharSequence setTime()
        {
          String time = "20080309";
          SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
          sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
          Date date = null;
          try {
            date = sdf.parse(time);
        } catch (ParseException pe) {
            Log.e("time", pe.getMessage());
        }
          SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");
          return date == null ? "error" : sdf2.format(date);
        }
      

  5.   

    这里也是同样的问题,我在时区为-12的地方设置时间为20080309转化后时间不是2008-03-09了
    SimpleDateFormat这里获取的是默认时区,
      

  6.   

    我是在手机上模拟这个环境的,我下一个测试程序,主要是格式化时间,手机上是可以设置时区的我设置手机当前时区不同或影响这个格式化后的值,并且我看了下源码,源码里是获取当前的时区Locale.getDefault()或者TimeZone.getDefault()
      

  7.   

    主要意思是:我在-12时区设置时间但是格式化的时候用的是Locale.getDefault()或者TimeZone.getDefault()获取的时区,这时获取的时区不一定是-12,那格式化后的值就变了~
    这样明白吗?
      

  8.   


    明白了。private CharSequence setTime()
        {
          String time = "20080309:03:56";
          SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd:hh:mm");
          sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
          Date date = null;
          try {
            date = sdf.parse(time);
        } catch (ParseException pe) {
            Log.e("time", pe.getMessage());
        }
          SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd-hh-mm");
          sdf2.setTimeZone(TimeZone.getTimeZone("America/Los_Angeles"));
          sdf2.setTimeZone(TimeZone.getTimeZone("UTC"));      return date == null ? "error" : sdf2.format(date);
        }你以前是什么时区,就用TimeZone.getTimeZone 设置成什么时区,"UTC" 就是你指的0时区吧?
      

  9.   

     还是不行~~看来大家也没好的方案~~那我就用String分割拼接吧~~~谢谢你的关注~~