我已经用日期生成了一个字符串
Calendar calendar = Calendar.getInstance();
String today = new java.text.SimpleDateFormat("dd/mm/yyyy").format(calendar.getTime));现在我有个字符串,怎么生成一个日期啊?(生成字符串的时候格式是不固定的,有可能是dd/mm/yyyy,也有可能是yyyy-mm-dd,或者是其它格式)

解决方案 »

  1.   

    我试过了,用SimpleDateFormat生成的string马上用parse不能还原成data类型,怎么办?
      

  2.   

    不固定那就尝试每一种可能,直到有一个返回了一个正常的值。像 2005-02-03 这种  MM-dd-yyyy 和 dd-MM-yyyy 格式都正确 
    ,无法判断到底是那种那就没有办法。
    如果是 HTML 应用不如提供一个小日历让它选,这样就不会有人和不确定的事情发生了。Javascript 日历网上遍地是,到处可以 Download/copy .
      

  3.   

    Calendar calendar = Calendar.getInstance();
    SimpleDateFormat sdf = new SimpleDateFormat("dd/mm/yyyy");
    String today = sdf.format(calendar.getTime));
    Date theDate = sdf.parse(today);用指定格式的SimpleDateFormat可以parse指定格式的String."我试过了,用SimpleDateFormat生成的string马上用parse不能还原成data类型,怎么办?"
    楼主用法有问题吧。
      

  4.   


    如果不想抛出异常,可以加上
    java.text.ParsePosition pos = new java.text.ParsePosition(0);   
    SimpleDateFormat sdf = new SimpleDateFormat("dd/mm/yyyy");
    String today = sdf.format(calendar.getTime));
    Date theDate = sdf.parse(today, pos);    
      

  5.   

    我觉得如果是想保存到数据库的话,不如用数据库里面的函数,比如ORACLE的to_date();操作方便很多
      

  6.   

    先介绍一下这个系统的情况。这是一个cs的web,由各个地方得到当地的操作时间,返回到server进行处理(当然除了时间还有其它的数据)。由于各个地方显示的时间格式是不一样的(显示必须要符合当地的习惯,体贴客户),比如新加坡是mm/dd/yyyy,台湾是dd/mm/yyyy,中国是yyyy-mm-dd,还有其他地方的日期显示格式。这些都在网页上用date类型转换成符合当地习惯的日期格式了(其实直接生成就符合了)
    问题是,他们在传到server的时候,就直接toString传了过来,既没有转换成统一的格式,也没有传来当地的日期格式,导致了这个问题的存在。那时候没有日期操作,直接往日志里一写就ok了。
    to  darkwing() :
         不好意思,那个是我写错了,没有把正确格式的string传进去,传了其它格式的。现在好了to  humanity(骷髅也跳舞):
        原来日期生成就是用日历来的,但为了符合当地的习惯特意转换为操作系统默认的日期显示格式。你提出的问题我已经正式提交给了manager,说我这里无法分辨有歧义的日期,要client那边的人要么转换为统一的日期格式再传给server,要么把当地的日期格式和日期一起传过来,这样我也不用进行遍历了。谢谢
    to stalin(林林):
        原来日期格式一不对就跳出,我都烦死了,呵呵。但现在还有其他问题。现在我用java.util.Date theDate = new java.text.SimpleDateFormat("yyyyMMdd").parse(strDate,pos)是不会抛出异常了。可我怎么判断这是一个正确的日期呢?只要格式不对我一对他进行操作还是抛出异常to greymouse0117(笑神):
        谢谢,数据库里是要保存,但之前要进行其它的处理
      

  7.   

    呵呵,这就关系到java.util.Locale 类了,建议你去看一下,他可以获得当前系统默认的一些货币阿,日期阿之类的表达方式,  结合 darkwing 可以解决这个问题。
      

  8.   

    int getWeekofday(int day){
    int dayofweek;
    switch(day){
    case 1:dayofweek=7;
    break;
    default: dayofweek=day-1;
    }
    return dayofweek;
    }

    void getTime(){
    Calendar rightnow=Calendar.getInstance();
    int yearInt=rightnow.get(rightnow.YEAR);
    int monthInt=rightnow.get(rightnow.MONTH);
    int dayInt=rightnow.get(rightnow.DATE);
    int hoursInt=rightnow.get(rightnow.HOUR_OF_DAY);
    int minutesInt=rightnow.get(rightnow.MINUTE);
    int secondsInt=rightnow.get(rightnow.SECOND);
    int dayofweekInt=rightnow.get(rightnow.DAY_OF_WEEK);
    today=yearInt+"年"+(monthInt+1)+"月"+dayInt+"日"+hoursInt+":"+minutesInt+":"+secondsInt+" 星期"+getWeekofday(dayofweekInt);

    }