DateTimeConverter.java 1.9 KB
package com.sy.utils;

import com.thoughtworks.xstream.converters.ConversionException;
import com.thoughtworks.xstream.converters.basic.AbstractSingleValueConverter;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateTimeConverter extends AbstractSingleValueConverter {

	private static final DateFormat DATE = new SimpleDateFormat("yyyy-MM-dd");
	private static final DateFormat DATETIME = new SimpleDateFormat("yyyyMMddHHmmss");
	private static final DateFormat DATETIME_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	private static final DateFormat DEFAULT_DATEFORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
	private static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
	private static final SimpleDateFormat date = new SimpleDateFormat("yyyyy-MM-dd");

	public boolean canConvert(Class type) {
		return type.equals(Date.class);
	}

	public Object fromString(String str) {
		try {
			if(str.length()>0) {
				if(str.indexOf("T")>0) {
					return DEFAULT_DATEFORMAT.parseObject(str);
				}
				if(str.indexOf("-")>0 && str.indexOf(":")>0) {
					return DATETIME_FORMAT.parseObject(str);
				}
				if(str.length()==14) {
					return DATETIME.parseObject(str);
				}
				if(str.length()==10) {
					return DATE.parseObject(str);
				}
				if(str.length()>14){
					str= str.substring(0,15);
					return DATETIME.parseObject(str);
				}
			}else {
				return null;
			}
		} catch (ParseException e) {
			e.printStackTrace();
		}
		throw new ConversionException("Cannot parse date " + str);
	}

	public static String getFormat() {
		return dateFormat.format(new Date());
	}

	public String dateFormat() {
		return dateFormat.format(new Date());
	}
	public String dateTimeFormat() {
		return DATETIME_FORMAT.format(new Date());
	}
	public static String getDay() {
		return date.format(new Date());
	}

}