gregoriancalendarconverter.java
来自「xstream是一个把java object序列化成xml文件的开源库,轻便好用」· Java 代码 · 共 58 行
JAVA
58 行
package com.thoughtworks.xstream.converters.extended;import java.util.Date;import java.util.GregorianCalendar;import java.util.TimeZone;import com.thoughtworks.xstream.converters.Converter;import com.thoughtworks.xstream.converters.MarshallingContext;import com.thoughtworks.xstream.converters.UnmarshallingContext;import com.thoughtworks.xstream.io.HierarchicalStreamReader;import com.thoughtworks.xstream.io.HierarchicalStreamWriter;/** * Converts a java.util.GregorianCalendar to XML. Note that although it currently only contains one field, it nests * it inside a child element, to allow for other fields to be stored in the future. * * @author Joe Walnes * @author Jörg Schaible */public class GregorianCalendarConverter implements Converter { public boolean canConvert(Class type) { return type.equals(GregorianCalendar.class); } public void marshal(Object source, HierarchicalStreamWriter writer, MarshallingContext context) { GregorianCalendar calendar = (GregorianCalendar) source; writer.startNode("time"); long timeInMillis = calendar.getTime().getTime(); // calendar.getTimeInMillis() not available under JDK 1.3 writer.setValue(String.valueOf(timeInMillis)); writer.endNode(); writer.startNode("timezone"); writer.setValue(calendar.getTimeZone().getID()); writer.endNode(); } public Object unmarshal(HierarchicalStreamReader reader, UnmarshallingContext context) { reader.moveDown(); long timeInMillis = Long.parseLong(reader.getValue()); reader.moveUp(); final String timeZone; if (reader.hasMoreChildren()) { reader.moveDown(); timeZone = reader.getValue(); reader.moveUp(); } else { // backward compatibility to XStream 1.1.2 and below timeZone = TimeZone.getDefault().getID(); } GregorianCalendar result = new GregorianCalendar(); result.setTimeZone(TimeZone.getTimeZone(timeZone)); result.setTime(new Date(timeInMillis)); // calendar.setTimeInMillis() not available under JDK 1.3 return result; }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?