SimpleDateFormat으로 구문 분석하기 위해 DateTimePicker에서 날짜 문자열의 형식을 올바르게 지정하는 방법은 무엇입니까?

Koolstr

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"));

어떤 도움이나 의견이라도 대단히 감사하겠습니다. 감사.

Koolstr

사용자의 의견 덕분에 문제를 해결하고 앞섰습니다. 내가 한 일은 SimpleDateFormat날짜 문자열이 도착하는 형식을 Date object. 그런 다음 DateTime객체 ( Joda-Time )를 다음과 같이 구성했습니다 Date object.

datePicked = formatter1.parse(request.getParameter("sendTime"));
DateTime dt = new DateTime(datePicked);

DateTime기본값은 UTC formatISO-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] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관