【问题标题】:Create a function that takes string object and returns Date object in dd-MM-yyyy format [duplicate]创建一个接受字符串对象并以 dd-MM-yyyy 格式返回 Date 对象的函数 [重复]
【发布时间】:2016-08-15 14:12:56
【问题描述】:

我在字符串对象中有日期。我想转换成 Date 对象。

Date getDateFmString(String dateString)
{

 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
 Date convertedCurrentDate = sdf.parse(dateString);
 return convertedCurrentDate ;
}

above 函数返回以下输出。

 Fri Apr 22 00:00:00 IST 2016
  • 但我只想以“2016-03-01”这种格式输出
  • 函数只能接受字符串。
  • 函数应该返回 Date 对象。

【问题讨论】:

  • 不是已经是正确的格式了吗?
  • 这是在字符串对象中我想要在日期对象中
  • 但是为了什么目的?是验证字符串的格式吗?
  • 我必须编写一个函数,该函数接受字符串并以 dd-MM-YYYY 格式返回 Date 对象

标签: java date date-formatting


【解决方案1】:

我在网络上做了很多研究,但我从一位专家那里得到了解决方案。

  Date getDateFrmString(String dDate)
  {       

    java.sql.Date dDate  = new java.sql.Date(new SimpleDateFormat("yyyy-MM-dd").parse(sDate).getTime());
    return dDate;
  }  

这就是我想要的。

【讨论】:

    【解决方案2】:

    更改日期格式

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    

    SimpleDateFormat sdf = new SimpleDateFormat("dd-mm-yyyy");
    

    希望这可行

    【讨论】:

    • 您必须使用大写的MM 来表示一个月。否则小mm 代表分钟。
    • 2016 年 1 月 22 日星期五 00:04:00 IST 2016 仍然是这样,它只能是 MM
    【解决方案3】:

    看这个例子

    public Class DateFormatDemo{ 
    
    public static void main (String args[]) {
    
    SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy);
    String dateInString = "01/01/2015";
    
    try{
    
    Date date = formatter.parse(dateInString);
    System.out.println(date);
    System.out.println(formatter.format(date)); 
    
    }catch(ParseException e){
    e.printStackTrace();
    }
    }
    }
    

    这个link 可能会帮助您进行字符串到日期对象的转换

    【讨论】:

      【解决方案4】:

      你正在用错误的格式尝试解析

      String dateString="01-01-2016";
      SimpleDateFormat sdfP = new SimpleDateFormat("dd-MM-yyyy");
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
      Date convertedCurrentDate = sdfP .parse(dateString);
      String date=sdf.format(convertedCurrentDate );
      System.out.println(date);
      

      输出:

      2016-01-01
      

      DEMO1

      如果您希望格式为dd-MM-yyyy,则无需定义单独的SimpleDateFormat 对象。

      String dateString="01-01-2016";
      SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
      Date convertedCurrentDate = sdf.parse(dateString);
      String date=sdf.format(convertedCurrentDate );
      System.out.println(date);
      

      输出:

      01-01-2016
      

      DEMO2

      要格式化字符串日期,您必须首先使用与字符串相同的日期格式解析字符串到日期对象,然后使用上面代码中看到的所需格式对其进行格式化。

      【讨论】:

      【解决方案5】:

      Date 对象没有格式。只有String 可以。Date 对象将以您告诉的任何格式输出。这完全取决于您调用.format()DateFormat 对象的格式。在Date 对象上调用toString() 方法使用DateFormat"dow mon dd hh:mm:ss zzz yyyy"

      【讨论】:

        【解决方案6】:

        让我们一步一步来:

        1. 您有一个日期为 dd-MM-yyyy 格式的字符串。
        2. 您想将其转换为日期。 (为此,您使用的是 SimpleDateFormat)
        3. 现在您正在打印日期。这里的问题是您是打印转换后的日期对象还是输入字符串? 如果它是一个日期对象,则调用日期类的 toString 方法。

        根据对 java.util.Date 类的评论,它是:

        dow mon dd hh:mm:ss zzz yyyy
        similar to
        Fri Apr 22 00:00:00 IST 2016
        

        所以这与您在第二种方法中得到的输出一致。但是那段代码怎么跑起来就奇怪了。

        String inputStr = "11-11-2012";
        DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
        Date inputDate = dateFormat.parse(input);
        

        未定义变量“输入”。

        有哪些可能的解决方案:

        1. 在打印日期时,根据要求使用 SimpleDateFormat 将其转换回字符串。

          Date d =new Date();
          SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
          String dStr = sdf.format(dateString);
          System.out.printn(dStr);
          
        2. 扩展类 java.util.Date 并覆盖 toString,但这是个坏主意。

        【讨论】:

        • 我想写一个接受字符串并以 dd-MM-yyyy 格式返回日期的函数。
        • @shimbushambu 您的评论毫无意义。日期是一个对象,字符串是可以应用格式的地方。因此,您需要将日期转换为字符串才能显示它。否则 Date 类将使用您已经看到的默认值。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-12-18
        • 1970-01-01
        • 2017-08-09
        • 1970-01-01
        • 2022-07-07
        • 2016-01-22
        • 1970-01-01
        相关资源
        最近更新 更多