jQuery DateTimePicker 를 사용하여 JSP
내가 만든 양식 에서 사용자가 선택한 날짜 및 시간 (시간대 포함)을 가져옵니다 . 나는 처음 Javascript
이므로 접근 방식이나 코드에서 실수를 할 수 있습니다. 그러니 만약 그렇다면, 제가 배울 수 있도록 지적 해주세요.
날짜 / 시간 jQuery
선택기가 예상대로 표시되고 작동하지만 내가 만든 Java 서블릿으로 데이터를 보내야합니다. 그러면 해당 날짜 데이터를 사용하여 Parse.com 데이터베이스에 새 Parse 개체가 생성됩니다. Parse의 문서 에 따르면 객체에 대해 저장된 날짜 필드는 다음과 같습니다.
"날짜 유형에는 밀리 초 정밀도 (YYYY-MM-DDTHH : MM : SS.MMMZ)로 ISO 8601 형식으로 저장된 UTC 타임 스탬프가 포함 된 iso 필드가 있습니다."
기본적으로 Parse의 요구 사항과 일치하도록 양식에서 반환 된 날짜를 다시 형식화해야합니다.이 작업은 서블릿에서 SimpleDateFormat으로 수행합니다. ( Date object
이미 Java 로 할 수 있었 으므로 대체 솔루션은 Date 데이터를에서 직접 Date 객체로 보내는 것 jsp
입니다. 가능하다면 방법을 알려주십시오.)
나는 일치합니다 SimpleDateFormat의 서식 와 DatePicker에서 형식 및 TimePicker 형식 이 SimpleDateFormat의 구문 분석 할 수있을 것이다, 그래서 내 서블릿에서 Date 객체에 문제가없는 날짜 문자열 포맷하십시오. (날짜와 시간을 다룰 때 하나의 보편적 인 형식을 사용하는 대신 이렇게 다양한 형식을 사용하도록 허용 한 사람은 누구든지 ... T_T) (이 부분이 내가 잘못한 것일까 요? 누구든지 재확인 할 의향이 있습니까?) 그래서 형식을 변경했습니다. DateTimePicker
사용자 가독성을 유지하면서 SimpleDateFormat과 일치하도록 내 에서 :
<script>
$(function() {
$("#timezone_datetimepicker").datetimepicker({
dateFormat: 'mm-dd-yy',
timeFormat: 'HH:mm Z',
onClose: function (dateText) {
$(this).datetimepicker.formatTime('HH:mmZ', dateText);
}
});
});
의 함수 onClose
는 형식을 SimpleDateFormat에 정확한 정밀도로 일치시키려는 시도 servlet
입니다. TimePicker의 예제 에서 언급 한 유틸리티 함수를 기반으로합니다 .
유틸리티 기능을 사용하여 자신의 시간을 포맷하십시오. $ .datepicker.formatTime (형식, 시간, 옵션)
$('#utility_example_2').text(
$.datepicker.formatTime('HH:mm z', { hour: 14, minute: 36, timezone: '+2000' }, {})
);
수많은 시도와 변형에도 불구하고 이것이 실패 하고 도움이 필요한 부분 입니다. 전달 된 Date 문자열을 SimpleDateFormat
다음 과 같이 구문 분석하려고 할 때 :
SimpleDateFormat formatter1 = new SimpleDateFormat("MM-dd-yyyy HH:mm z");
SimpleDateFormat formatter2 = new SimpleDateFormat("MM-dd-yyyy'T'HH:mmz");
try {
//datePicked and datePickedFormatted are global Date variables
datePicked = formatter1.parse(request.getParameter("sendTime"));
datePickedFormatted = formatter2.parse(datePicked.toString());
} catch (ParseException e1) {
System.out.println("Date formatter failed to parse chosen sendTime.");
e1.printStackTrace();
}
내 로그에이 오류가 표시됩니다.
java.text.ParseException : 구문 분석 할 수없는 날짜 : "08-22-2014 05:18 -04 : 00"
SimpleDateFormat과 일치하도록 형식을 지정하려고 할 때 왜 그런 형식의 서블릿으로 전송되는 이유는 무엇입니까? SimpleDateFormat이 그것을 받아들이지 않는 이유는 무엇입니까?
SimpleDateFormat을 사용하는 대신 Joda-Time으로 날짜 문자열을 구문 분석하려고 시도했지만 작동하지 않았습니다.
DateTime dt = new DateTime(request.getParameter("sendTime"));
어떤 도움이나 의견이라도 대단히 감사하겠습니다. 감사.
사용자의 의견 덕분에 문제를 해결하고 앞섰습니다. 내가 한 일은 SimpleDateFormat
날짜 문자열이 도착하는 형식을 Date object
. 그런 다음 DateTime
객체 ( Joda-Time )를 다음과 같이 구성했습니다 Date object
.
datePicked = formatter1.parse(request.getParameter("sendTime"));
DateTime dt = new DateTime(datePicked);
DateTime
기본값은 UTC format
및 ISO-8601
이므로 .toString()
Parse.com의 데이터베이스에서이 방법을 문제없이 사용할 수 있습니다. 이것은 결국 작동하는 최종 코드입니다.
SimpleDateFormat formatter1 = new SimpleDateFormat("MM-dd-yyyy HH:mm X");
try {
datePicked = formatter1.parse(request.getParameter("sendTime"));
System.out.println("Retrieved and formatted dateTime: " + datePicked.toString());
} catch (ParseException e1) {
System.out.println("Date formatter failed to parse chosen sendTime.");
e1.printStackTrace();
}
DateTime dt = new DateTime(datePicked);
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다