1/** 2 * Copyright (C) 2010 the original author or authors. 3 * See the notice.md file distributed with this work for additional 4 * information regarding copyright ownership. 5 * 6 * Licensed under the Apache License, Version 2.0 (the "License"); 7 * you may not use this file except in compliance with the License. 8 * You may obtain a copy of the License at 9 * 10 * http://www.apache.org/licenses/LICENSE-2.0 11 * 12 * Unless required by applicable law or agreed to in writing, software 13 * distributed under the License is distributed on an "AS IS" BASIS, 14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 * See the License for the specific language governing permissions and 16 * limitations under the License. 17 */ 18 19package com.beust.jcommander.converters; 20 21import com.beust.jcommander.ParameterException; 22 23import java.text.ParseException; 24import java.text.SimpleDateFormat; 25import java.util.Date; 26 27/** 28 * Converts a String to a Date. 29 * TODO Modify to work with all valid ISO 8601 date formats (currently only works with yyyy-MM-dd). 30 * 31 * @author Angus Smithson 32 */ 33public class ISO8601DateConverter extends BaseConverter<Date> { 34 35 private final static SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd"); 36 37 public ISO8601DateConverter(String optionName) { 38 super(optionName); 39 } 40 41 public Date convert(String value) { 42 try { 43 return DATE_FORMAT.parse(value); 44 } catch (ParseException pe) { 45 throw new ParameterException(getErrorString(value, String.format("an ISO-8601 formatted date (%s)", DATE_FORMAT.toPattern()))); 46 } 47 } 48} 49