`

用于处理Unix Time时间的工具类

    博客分类:
  • java
阅读更多
用于处理Unix Time时间的工具类
import java.util.Calendar;
import java.util.Date;

/**
 * 该类是DateUtil的改进类, 专门用于处理Unix Time时间, 即格式为"yyyy-MM-dd HH:mm:ss". 
 */
public final class UnixTime {

    static ThreadLocal<Calendar> CalendarLocal = new ThreadLocal<Calendar>() {

        @Override
        protected Calendar initialValue() {
            return Calendar.getInstance();
        }

    };

    /**
     * 标记各个字段的起始位置; 
     */
    static interface Index {
        /* yyyy-MM-dd HH:mm:ss */
        int[] YEAR = { 0, 4 };
        int[] MONTH = { 5, 7 };
        int[] DAY = { 8, 10 };
        int[] HOUR = { 11, 13 };
        int[] MINUTE = { 14, 16 };
        int[] SECOND = { 17, 19 };
    }

    /**
     * 解析日期字串, 返回各个时间段的数值. 依次是年, 月, 日, 时, 分, 秒.
     * 
     * @param val
     *            日期字串, 固定格式为"yyyy-MM-dd HH:mm:ss"
     * @return 解析后的各个时间段的数值数组.
     */
    public static int[] extract(String val) {
        int[] vals = new int[6];
        int len = val.length();
        if (len >= Index.YEAR[1]) {
            vals[0] = Integer.parseInt(val.substring(Index.YEAR[0], Index.YEAR[1]), 10);
        }
        if (len >= Index.MONTH[1]) {
            vals[1] = Integer.parseInt(val.substring(Index.MONTH[0], Index.MONTH[1]), 10) - 1;
        }
        if (len >= Index.DAY[1]) {
            vals[2] = Integer.parseInt(val.substring(Index.DAY[0], Index.DAY[1]), 10);
        }
        if (len >= Index.HOUR[1]) {
            vals[3] = Integer.parseInt(val.substring(Index.HOUR[0], Index.HOUR[1]), 10);
        }
        if (len >= Index.MINUTE[1]) {
            vals[4] = Integer.parseInt(val.substring(Index.MINUTE[0], Index.MINUTE[1]), 10);
        }
        if (len >= Index.SECOND[1]) {
            vals[5] = Integer.parseInt(val.substring(Index.SECOND[0], Index.SECOND[1]), 10);
        }
        return vals;
    }

    /**
     * 解析日期对象, 返回各个时间段的数值. 依次是年, 月, 日, 时, 分, 秒.
     * 
     * @param val
     *            日期字串, 固定格式为"yyyy-MM-dd HH:mm:ss"
     * @return 解析后的各个时间段的数值数组.
     */
    public static int[] extract(Date val) {
        int[] vals = new int[6];
        Calendar cal = CalendarLocal.get();
        cal.setTime(val);
        vals[0] = cal.get(Calendar.YEAR);
        vals[1] = cal.get(Calendar.MONTH);
        vals[2] = cal.get(Calendar.DAY_OF_MONTH);
        vals[3] = cal.get(Calendar.HOUR_OF_DAY);
        vals[4] = cal.get(Calendar.MINUTE);
        vals[5] = cal.get(Calendar.SECOND);
        return vals;
    }

    /**
     * 解析日期字串, 返回日期对象.
     * 
     * @param val
     *            日期字串, 固定格式为"yyyy-MM-dd HH:mm:ss"
     * @return
     */
    public static Date parse(String val) {
        int[] vals = extract(val);
        Calendar cal = CalendarLocal.get();
        cal.set(vals[0], vals[1], vals[2], vals[3], vals[4], vals[5]);
        return cal.getTime();
    }

    /**
     * 格式日期对象.
     * 
     * @param date
     * @return
     *            日期字串, 固定格式为"yyyy-MM-dd HH:mm:ss"
     */
    public static String format(Date date) {
        int[] vals = extract(date);
        return String.format("%04d-%02d-%02d %02d:%02d:%02d", vals[0], vals[1] + 1, vals[2], vals[3], vals[4], vals[5]);
    }

    /**
     * 格式日期对象.
     * 
     * @param date
     * @return
     *            日期字串, 固定格式为"yyyy-MM-dd"
     */
    public static String formatDate(Date date) {
        int[] vals = extract(date);
        return String.format("%04d-%02d-%02d", vals[0], vals[1] + 1, vals[2]);
    }

}

 

0
2
分享到:
评论

相关推荐

    日期处理工具类

    "日期处理工具类"通常是指自定义的类或使用Java内置的日期时间API来执行与日期相关的操作,如日期加减、日期格式化以及获取特定周或日等功能。在本案例中,我们有一个名为`DateUtils`的类,它可能包含了这些实用方法...

    时间日期工具类(包含java8新特性).zip

    在这个"时间日期工具类(包含java8新特性).zip"压缩包中,我们有两个文件:DateUtil.java和DateUtils.java,它们很可能是自定义的工具类,用来扩展Java的标准日期处理功能。 首先,我们来看Java 8引入的新特性。在...

    工具类_时间处理

    6. **Duration与Period**: Java 8中的`Duration`用于处理时间间隔(秒和纳秒级别),而`Period`则处理日期间隔(年、月、日级别)。这两个类使得计算两个日期或时间之间的时间差变得简单。 7. **Instant**: `...

    Unix time t 和 年月日转换的小工具的源代码 VC6

    本资源提供的是一款小工具的源代码,用于将Unix时间戳`time_t`与常见的年月日日期格式进行相互转换。这对于处理时间相关的编程任务非常有用,尤其是在需要将服务器(可能基于Unix)与客户端(可能是Windows)之间的...

    unix时间戳转换查询小工具

    总结起来,这个“Unix时间戳转换查询小工具”是一个实用的工具,能够帮助我们轻松地在Unix时间戳和人类可读的日期时间之间进行转换,尤其对于处理时间相关的编程任务具有很高的价值。通过学习和理解其工作原理,我们...

    UTC.zip_UTC long_时间工具类

    在给定的"UTC.zip_UTC long_时间工具类"压缩包中,包含了一个名为"UTC.java"的文件,它很可能是一个自定义的时间工具类,用于处理UTC时间和不同数据类型之间的转换。 这个"UTC.java"文件可能提供了以下几种功能: ...

    时间工具类

    总结来说,时间工具类是编程中不可或缺的一部分,它集成了各种日期和时间操作,使得开发者可以方便快捷地处理时间相关的业务逻辑。在实际项目中,根据需求定制的时间工具类能极大地提高开发效率,同时降低代码复杂度...

    日期时间处理类需要处理的时间和日期的转换

    其次,`time`模块主要用于处理时间,尤其是小时、分钟、秒和微秒。`time`类不直接表示日期,而是表示一天中的时间。例如,`time(hour=12, minute=30, second=45)`表示中午12点30分45秒。`time`类的方法包括`hour`, `...

    Unix时间戳与北京时间的转换工具

    在C#中,可以使用`DateTime`类和`DateTimeOffset`类来处理日期和时间。为了从Unix时间戳获取DateTime对象,我们可以使用以下代码: ```csharp long unixTimestamp = 1635292800; // 示例Unix时间戳 DateTime ...

    Java DateUtil时间工具类

    Java中的DateUtil时间工具类是开发者在处理日期和时间时常用的一个自定义工具类。它通常包含了一系列静态方法,用于简化Java内置的日期和时间API的使用,提高代码的可读性和可维护性。在实际开发中,由于Java 8之前...

    PHP实例开发源码—UNIX时间戳转换工具.zip

    2. **PHP时间函数**:PHP提供了丰富的日期和时间处理函数,如`time()`用于获取当前UNIX时间戳,`strtotime()`将日期或时间字符串转换为UNIX时间戳,`date()`和`strftime()`则可以将UNIX时间戳转换为用户可读的日期和...

    基于PHP的UNIX时间戳转换工具源码.zip

    这个压缩包"基于PHP的UNIX时间戳转换工具源码.zip"显然包含了一个用于处理UNIX时间戳转换的PHP代码实现。UNIX时间戳是自1970年1月1日(UTC/GMT的午夜)以来的秒数,不考虑闰秒,常用于存储和传递时间信息。下面我们...

    OC Extension Time(时间).zip

    通过这样的工具类,开发者可以更高效地处理时间相关任务,避免重复编写基础时间操作的代码,提高代码的可读性和复用性。在实际项目中,我们可以直接导入这个工具类,利用其中的方法来处理各种时间需求,简化代码逻辑...

    【原创】平时编码中积累的,非常好用,且很全的【时间工具类】

    在编程领域,时间工具类是不可或缺的一部分,它们帮助开发者高效地处理日期和时间相关的操作。在给定的标题“【原创】平时编码中积累的,非常好用,且很全的【时间工具类】”中,我们可以推测这是一个作者通过长期编程...

    UTC2Time utc秒数时间与日期时间转换工具

    在这个案例中,UTC2Time工具可能是用Perl编写的一个命令行程序,允许用户输入UTC秒数,然后将其转换为易读的日期和时间格式,反之亦然。使用Perl实现这样的工具可以快速开发,并且能处理各种时间格式的转换逻辑。 ...

    Unix_API.rar

    6. 时间与日期处理:time(), clock(), gettimeofday()等函数用于获取当前时间,而sleep()和nanosleep()则用于进程的睡眠控制。 7. 其他功能:如pipe()和fifo()用于创建管道进行进程间的通信,dup()和dup2()用于复制...

    基于PHP的UNIX时间戳转换工具V1.1源码.zip

    2. **PHP处理时间戳**:PHP提供了丰富的函数来处理UNIX时间戳,如`time()`用于获取当前时间的UNIX时间戳,`strtotime()`用于将人类可读的日期时间字符串转换为时间戳,以及`date()`和`strftime()`用于将时间戳格式...

    matlab开发-unixtimetomatlabtimeconverter

    2. **MATLAB的datetime类**:MATLAB的`datetime`类是处理日期和时间的主要工具,可以表示各种格式的日期和时间,包括日期字符串、数字和时间戳。 3. **datetime函数的使用**:MATLAB内置的`datetime`函数可以用于将...

    php封装的时间处理类

    "php封装的时间处理类"就是这样的一个工具,它整合了各种时间相关的操作,方便我们在项目中直接调用。 该类可能包含了以下功能: 1. **获取当前时间**:提供一个方法,如`getCurrentTime()`,用于获取当前的Unix...

    xk-time Java时间工具包 v3.2.4.zip

    8. **增强的日期时间类**:可能扩展了Java内置的日期和时间类,添加了更多的方法和属性,使得开发者在处理时间时更加灵活。 9. **线程安全**:如果工具包声明为线程安全,那么它可以在多线程环境中被多个线程同时...

Global site tag (gtag.js) - Google Analytics