使用特定格式在java中解析日期字符串

Joh*_*ohn -1 java android android-emulator

我正在解析日期但没有得到正确的结果.

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
startDate = dateFormat.parse("2013-05-18");
Run Code Online (Sandbox Code Playgroud)

得到输出" 星期六5月18日00:00:00 IST 2013 ",但我想简单的2013-05-18格式的日期格式而不是字符串.

提前致谢...!!!

JB *_*zet 5

如果您想要字符串"2013-05-18"中的字符串"2013-05-18",则根本不需要任何解析.要将日期对象转换为具有给定格式的字符串,请使用SimpleDateFormat.format():

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
startDate = dateFormat.parse("2013-05-18");
System.out.println(dateFormat.format(startDate));
Run Code Online (Sandbox Code Playgroud)

Date对象只是一个包含数毫秒的long值的包装器.它的toString()方法不使用您用来解析字符串的模式并创建Date对象.

  • before()和after()不要通过将日期转换为字符串并比较字符串来比较日期.它们只是比较Date对象中包含的毫秒数.他们工作正常,不用担心.如果比较两辆车的速度,你不关心它们是用圆形面板还是数字显示器旋转来表示速度,对吗?你只关心计数器指示的km/h.这与Date对象相同.它们持有一些ms.,你不关心这个数字的表示方式.你只需比较数字.这就是after()和before()之后的事情. (3认同)
  • 日期没有任何格式.这只是几毫秒.要将其表示为给定格式的字符串,请参阅我的答案.你的代码使用`date.toString()`,所以你也打印一个字符串.如果您希望date.toString()以您的首选格式返回日期,那将永远不会发生,因为您必须使用DateFormat来执行此操作. (2认同)