0

在我的应用程序中,我正在以字符串格式从用户读取日期参数。

读取参数后,我需要将 String 转换为* desired date format*

所需格式 = YYYY-MM-DD HH:MM:SS

输入字符串可以是任何格式。

例如:2013/09/19 14:21:072013-09-19 14:21:07

无论获得的格式如何,我都需要将其转换为所需的格式。如何做到这一点?

我看到几个片段在哪里,

SimpleDateFormat formatter = new SimpleDateFormat("YYYY/MM/DD HH:MM:SS"); 
Date dt = formatter.parse("2013/09/19 14:21:07");
SimpleDateFormat desiredFormatter = new
SimpleDateFormat("YYYY-MM-DD HH:MM:SS");

desiredFormatter .format(dt);

上面的代码片段只有在我们知道解析字符串的输入格式时才有效。但就我而言,我不知道输入格式。所以我想直接使用格式化方法而不用解析。

这可能吗?

4

4 回答 4

4

这是不可能的。您无法确定 01/01/2013 是否是MM/dd/yyyy,或者dd/MM/yyyy您是否事先不知道真实格式

于 2013-09-19T11:29:48.457 回答
0

谢谢伙计们,感谢您的所有评论和答案。

甚至我觉得在不知道其输入格式的情况下无法将 String 转换为 Date。无论如何,我将尝试重新设计设计以改变读取输入的方式。

再次感谢。

于 2013-09-19T11:38:04.847 回答
0

这取决于设计。

1. If user can type any format in GUI side, then we can't able to convert, simply its impossible.
2. If user date format is validated with any specific format in GUI, then we can able to convert it With extra condition in server side coding.
于 2013-09-19T11:39:06.873 回答
0

正如你所说的日期将是例如:2013/09/19 14:21:07 或 2013-09-19 14:21:07

我认为这种方式对你有用

String text="date in yyy/mm/dd or yyy-mm-dd"
SimpleDateFormat sdf1=null;
        try {
            if(text.contains("/"))
            {
               sdf1  = new SimpleDateFormat("yyyy/MM/dd");

            }
            else
            {
               sdf1  = new SimpleDateFormat("yyyy-MM-dd");

            }
            SimpleDateFormat sdf2 = new SimpleDateFormat("MMM dd yyyy");

            Date date = sdf1.parse(text);

            System.out.println("Result==> " + sdf2.format(date));
        } catch (ParseException exp) {
            exp.printStackTrace();
        }
于 2013-09-19T11:31:03.803 回答