2017-01-23 74 views
1

嗨,大家好我使用引导日期时间选择器来保存日期和时间,当我选择在jsp中的日期。我得到的日期和时间,这样2017年1月23日在Java类中的字符串 - 下午二时五十我想这日期是行不通的转换,我需要改变如何在Java中转换字符串和日期时间

$(function() {  
    $('#datetimepicker8').datetimepicker({   
     startDate: new Date(), 
     format : 'dd MM yyyy - HH:ii p', 
     autoclose: 1, 
    }).on('changeDate', function(e) { 
     // Revalidate the date field 
     $('#timeTableUpdateForm').bootstrapValidator(
     'revalidateField', 'examDate'); 
    }); 
}); 

public class StringToDate { 
    public static void main(String[] args) { 
     SimpleDateFormat formatter = 
     new SimpleDateFormat("dd MMMM yyyy-HH:mm:ss a"); 
     String dateInString = "23 January 2017 - 02:50 pm"; 
     try { 
     Date date = formatter.parse(dateInString); 
     System.out.println(date); 
     System.out.println(formatter.format(date)); 
     } 
     catch(ParseException e) { 
     e.printStackTrace(); 
     } 
    } 
} 
+0

除了下面的答案,这似乎是取决于语言是否被解析与否。 Beeing German只有在使用'Januar'而不是'January'的时候才有效。 – geisterfurz007

回答

1

这里是一个工作代码:

public static void main(String[] args) { 
     final SimpleDateFormat formatter = 
     new SimpleDateFormat("dd MMMMM yyyy - HH:mm a", Locale.US); 
     final String dateInString = "23 January 2017 - 02:50 pm"; 
     try { 
     final Date date = formatter.parse(dateInString); 
     System.out.println(date); 
     System.out.println(formatter.format(date)); 
     } 
     catch(final ParseException e) { 
     e.printStackTrace(); 
     } 
    } 

有了这个输出:

Mon Jan 23 02:50:00 CET 2017 
23 January 2017 - 02:50 AM 
+0

Mon Jan 23 00:00:00 IST 2017 for this date.getYear is not working –

+0

请给'dateInString'值解析。 – Aubin

1

两个错误的位置:

  1. 一个空间,一年破折号之间缺少 - 短跑和小时
  2. 你告诉Java来解析秒,但是你没有秒在你的日期串。

您需要在SimpleDateFormat的从

SimpleDateFormat formatter = new SimpleDateFormat("dd MMMM yyyy-HH:mm:ss a"); 

改为

// Added two spaces and removed seconds from format, added Locale 
SimpleDateFormat formatter = new SimpleDateFormat("dd MMMM yyyy - HH:mm a", Locale.US); 
//               ^^ ^

通过改变你的代码,这样我得到这样的输出:

Mon Jan 23 02:50:00 GMT 2017 
23 January 2017 - 02:50 AM 

DEMO

+0

',Locale.US'应该被添加到'SimpleDateFormat' ctor在非美国操作系统中执行 – Aubin

相关问题