【问题标题】:Parsing String to Date without using SimpleDateFormat?在不使用 SimpleDateFormat 的情况下将字符串解析为日期?
【发布时间】:2013-03-26 04:40:56
【问题描述】:

我正在开发一个 spring 应用程序,在我的一个控制器中,我有以下几行来从字符串解析到日期并将解析的日期格式化为所需的格式。但是我再次需要在不使用任何 SimpleDateFormat 的情况下将格式化的字符串解析回日期,所以可以这样做吗?

SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd-yyyy");
SimpleDateFormat dateFormat2 = new SimpleDateFormat("yyyy-MM-dd");

Date pick=dateFormat.parse(request.getParameter("pickDate"));
String pick_date=dateFormat2.format(pick);

【问题讨论】:

  • 使用 SimpleDateFormat 有什么问题?
  • 为什么不能使用SimpleDateFormat
  • 你应该避免使用 SimpleDataFormat,因为它不是线程安全的。
  • 那么您可以拥有一个本地日期格式对象,而不是跨线程共享一个
  • 我没有看到不使用SimpleDateFormat的正当理由

标签: java simpledateformat date-formatting date-parsing


【解决方案1】:

编辑:

我在维基百科中发现中国的语言环境为 yyyy-MM-dd。检查此参考date format by country 将语言环境设置为中国,您将获得所需的日期格式

试试这个

String d1="12-27-2010";
    Stirng[] splitdata=d1.split("-");

   int month=Integer.parseInt(splitdata[0]);
 int day=Integer.parseInt(splitdata[1]);
int year=Integer.parseInt(splitdata[2]);

Calender cal=Calender.getInstance(Locale.CHINA);
cal.set(year,month,day);
Date d=cal.getTime();

这应该可行


如果你知道你的数据格式,你就可以做到。通过使用简单的字符串操作

例如: 如果你的数据格式是

MM-dd-yyyy

然后你可以像这样转换成yyyy-MM-dd

String d1="12-27-2010";
Stirng[] splitdata=d1.split("-");

String s2= splitdate[2]+"-"+splitdate[0]+"-"+splitdate[1];

【讨论】:

  • 但是您将如何将其解析回日期? 's2' 在您的示例中只是字符串而不是 Date 对象。
  • @WannabeGeek 很抱歉回复晚了,也有错误的答案。我会在一分钟内回复你
  • 感谢您的努力,感谢您的回答。我会尝试你的答案并回复你。
【解决方案2】:

您可以为此使用连接运算符(+)

【讨论】:

    【解决方案3】:

    可以;只需编写代码进行解析。应该没那么难……

    【讨论】:

    • 不使用 SimpleDateFormat 怎么办?
    • 就像您编写任何其他东西一样。拿起字符串,将其分解,“读取”字符串,从中确定日期。我的意思是如果你不使用该语言的内置库,你必须自己实现它。编写 SimpleDateFormat 的人确实编写了解析代码。你可以写一些类似的东西。网络搜索也应该为您提供示例代码。但在大多数情况下,这是徒劳的……很难做到正确。 SimpleDateFormat 到底有什么问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-21
    • 1970-01-01
    • 2014-12-17
    • 2014-08-28
    • 2017-04-10
    • 1970-01-01
    相关资源
    最近更新 更多