`
fman
  • 浏览: 53670 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
文章分类
社区版块
存档分类
最新评论

XMLGregorianCalendar 和 Calendar 之间的转换器

阅读更多
XMLGregorianCalendar 的month是从1开始到12
GregorianCalendar 的month是从0到11

package org.stephencat.ws.util;
import org.apache.commons.beanutils.*;

import java.util.Calendar;
import javax.xml.datatype.XMLGregorianCalendar;
import com.sun.org.apache.xerces.internal.jaxp.datatype.XMLGregorianCalendarImpl;

/**
 * XMLGregorianCalendar 和 Calendar 之间的转换器,适用于 Apache Commons BeanUtils.copyProperties 方法。<br>
 * 使用示例:
 * <pre>
 * import org.apache.commons.beanutils.*;
 * import javax.xml.datatype.XMLGregorianCalendar;
 * import java.util.Canlendar;
 *  
 *  
 * // 当需要转换为 XMLGregorianCalendar 类型时使用
 * ConvertUtils.register(new XMLGregorianCalendarConverter(), XMLGregorianCalendar.class);
 * // 当需要转换为 Calendar 类型时使用
 * ConvertUtils.register(new XMLGregorianCalendarConverter(), Calendar.class);
 * BeanUtils.copyProperties(destObj, srcObj);
 * </pre>
 * <p>注意:java.util.Calendar 的时区 (ZONE_OFFSET) 是以毫秒为单位的值。</p>
 * 
 * @author Stephen WJJ
 *
 */
public class XMLGregorianCalendarConverter implements Converter {

    public Object convert(Class arg0, Object arg1) {
        if(arg1 instanceof XMLGregorianCalendar){
            return this.convert(arg0, (XMLGregorianCalendar)arg1);
        }else{
            return this.convert(arg0, (Calendar)arg1);
        }
    }
    
    public Calendar convert(Class calendarType, XMLGregorianCalendar xmlCalendar){
        return xmlCalendar.toGregorianCalendar();
    }
    
    public XMLGregorianCalendar convert(Class xmlCalendarType, Calendar calendar){
        XMLGregorianCalendar cal = new XMLGregorianCalendarImpl();
        cal.setYear(calendar.get(Calendar.YEAR));
        cal.setMonth(calendar.get(Calendar.MONTH) +1);
        cal.setDay(calendar.get(Calendar.DAY_OF_MONTH));
        cal.setHour(calendar.get(Calendar.HOUR_OF_DAY));
        cal.setMinute(calendar.get(Calendar.MINUTE));
        cal.setSecond(calendar.get(Calendar.SECOND));
        cal.setMillisecond(calendar.get(Calendar.MILLISECOND));
        cal.setTimezone(calendar.get(Calendar.ZONE_OFFSET) / 60000 );
        return cal;
    }

}
分享到:
评论

相关推荐

    Date、String、Calendar之间的转换_java编程_

    在Java编程中,Date、String和Calendar是三个重要的日期时间处理类,它们之间相互转换的技巧是开发者必备的知识。理解并熟练掌握这三者之间的转换,对于处理日常的日期时间问题至关重要。 首先,我们来看`Date`类。...

    String、Calendar、Date间的相互转换

    本篇将详细解释如何在`String`、`Calendar`、`Date`之间进行转换,并提供具体的示例代码。 #### 1. Calendar 转化为 String 要将`Calendar`对象转换为`String`,我们首先需要通过`getTime()`方法获取`Date`对象,...

    java 中Calendar日期格式的转换

    本文将深入探讨如何利用`Calendar`类进行日期格式的转换,以及如何在Java中有效地处理日期和时间。 ### 1. `Calendar`类的基本介绍 `Calendar`类是Java平台的一部分,位于`java.util`包中。它代表特定时刻的时间值...

    Date、String、Calendar转换

    详细地Date、String、Calendar之间的转换

    Java 之 Date 和 Calendar 实例

    在Java编程语言中,`Date`和`Calendar`类是处理日期和时间的核心组件。这两个类在不同的Java版本中有着不同的使用方式和功能,对于理解Java时间处理机制至关重要。本篇将深入探讨`Date`和`Calendar`类的实例应用。 ...

    Calendar和Date的转化

    为了更好地理解和使用这两个类之间的转换方法,本文将详细介绍如何将`Calendar`对象转换为`Date`对象,以及如何将`Date`对象转换为`Calendar`对象。 #### 1. Calendar转为Date `Calendar`类提供了获取当前时间的...

    实例讲解String Date Calendar之间的转换

    本文将详细讲解这些类型之间的转换方法,帮助开发者更好地理解和运用。 1. **Calendar转String** `Calendar`对象可以表示复杂的日期和时间信息。要将其转换为字符串,我们可以使用`SimpleDateFormat`类。首先创建...

    java中时间类Date和Calendar的使用

    总结来说,Java中的`Date`和`Calendar`类提供了基本的时间处理功能,`DateFormat`和`SimpleDateFormat`则负责日期和时间的格式化,使我们能够根据需要将日期和时间转换为人类可读的字符串。在实际开发中,这些类经常...

    Calendar和Date

    在Java编程语言中,`Calendar`和`Date`类是用于处理日期和时间的核心类。它们在处理日期和时间操作时扮演着重要角色。这里我们将深入探讨这两个类以及它们之间的对比,同时展示如何计算上月某一天的日期以及获取指定...

    聊一聊Calendar的使用

    `Calendar`类在实际开发中非常常见,尤其在需要对日期进行复杂处理时,如计算两个日期之间的差值、获取特定日期的星期几等。 首先,我们来看一下`Calendar`的基本用法。创建一个`Calendar`实例通常需要通过`...

    Java 之 Date 和 Calendar

    `Date`和`Calendar`之间的转换也很常见。例如,你可以使用`Calendar`对象设置日期和时间,然后转换为`Date`对象: ```java calendar.setTimeInMillis(System.currentTimeMillis()); Date dateFromCalendar = ...

    Java基础之Date和Calendar类的使用方法

    Java中的Date和Calendar类是处理日期和时间的核心组件。Date类主要用于表示特定的瞬间,精确到毫秒。在早期版本的Java中,Date类的设计受到批评,因为它的API不直观且容易导致错误。为了解决这些问题,大部分日期和...

    PyPI 官网下载 | LunarCalendar-0.0.9.tar.gz

    总之,LunarCalendar库是Python开发者处理农历问题的得力助手,它简化了农历与公历之间的转换,使得在Python项目中集成农历功能变得更加简单。通过不断学习和掌握这样的工具库,我们可以更好地利用Python来解决各种...

    Android 使用Calendar获取时间信息

    在实际应用中,`Calendar`通常与其他日期时间类,如`Date`和`SimpleDateFormat`一起使用,将日期转换为字符串或者反之。例如,将`Calendar`对象转换为易读的日期格式: ```java SimpleDateFormat sdf = new ...

    Calendar日期代码详解

    - 使用 `getTime()` 方法可以将 `Calendar` 对象转换为 `Date` 对象,便于输出或进一步处理。 #### 3. 总结 通过上述代码示例可以看出,`java.util.Calendar` 类提供了非常强大的日期时间处理功能。它不仅能够...

    用于经济日历的 HTML 文件转换器 - MetaTrader 5脚本.zip

    用于经济日历的 HTML 文件转换器. 这个脚本程序会解析从 http://www.investing.com/economic-calendar 下载的页面, 并且构建含有新闻列表的 CSV 文件。

    Date与Calendar详解

    `java.util.Calendar`是Java中用于操作日期和时间的抽象类,提供了比`Date`类更全面的日期和时间操作能力,包括时区支持、日历字段的访问以及日期的加减运算等。 ##### 使用Calendar `Calendar`类是抽象的,不能...

    日历calendar详细代码

    在Java编程语言中,`Calendar`类是用于处理日期和时间的核心类,它是一个抽象类,提供了各种日期和时间操作的方法。在这个“日历calendar详细代码”中,我们很可能会看到如何使用`Calendar`类来创建、修改和查询日期...

    Java中Calendar类.pdf

    Java中的`Calendar`类是处理日期和时间的核心类,它是一个抽象类,提供了一系列方法用于在特定瞬间与一组日历字段之间进行转换和操作。自JDK 1.1起,`Calendar`类就被推荐用来处理日期和时间,因为它的功能比`Date`...

    Calendar一个自定义灵活的日历选择器

    本文将深入探讨名为"Calendar"的自定义日历选择器,它具备灵活性、精确性和自定义能力,支持多种展示模式。 "Calendar"日历选择器的主要特性包括: 1. **时间范围精确到日**:这意味着用户可以选择任意一天作为...

Global site tag (gtag.js) - Google Analytics