`

用于处理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
分享到:
评论

相关推荐

    z5站长工具 v2.0.rar

    30、Unix时间戳(Unix timestamp)转换工具(什么是Unix时间戳(Unix timestamp): Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01...

    站长工具源码 v2.0 PHP版.rar

    )30、Unix时间戳(Unix timestamp)转换工具(什么是Unix时间戳(Unix timestamp): Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年...

    站长工具完整无错版 v2.6.rar

    30、Unix时间戳(Unix timestamp)转换工具(什么是Unix时间戳(Unix timestamp): Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01...

    八桂大地便民查询工具 v1.0.rar

    30、Unix时间戳(Unix timestamp)转换工具(什么是Unix时间戳(Unix timestamp): Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01...

    timezonedb-sqlite:用于处理来自 timezonedb.com 的数据的 SQLite 脚本

    使用类的工具导入数据。 来自 timezonedb.com 的示例适用于 Postgres,而此处的脚本适用于 SQLite。查询sqlite.sql有 2 个示例查询,它们显示了如何查询该数据库。 数据库中时区的每个条目都包含定义的规则生效的...

    WinRATS 7.0.rar

    RATS是Regression Analysis of Time Series时间序列回归分析的缩写,用于计量经济时间序列分析,目前已有数十个国家的经济学者使用本软件,用盘面Cross sectional data,经济模型建立,预测等等. 新增模型建立含状态...

    ubench软件压缩包

    基准的Unix实用程序“ubench”提供了一个单一Unix操作系统的测量性能比较各种口味的机器上运行。 Ubench is distributed in the hope that it will be useful, but without any warranty; without even the implied...

    MySQL5.1参考手册官方简体中文版

    8.6. mysqlbinlog:用于处理二进制日志文件的实用工具 8.7. mysqlcheck:表维护和维修程序 8.8. mysqldump:数据库备份程序 8.9. mysqlhotcopy:数据库备份程序 8.10. mysqlimport:数据导入程序 8.11. mysqlshow-...

    MySQL 5.1中文手冊

    8.6. mysqlbinlog:用于处理二进制日志文件的实用工具 8.7. mysqlcheck:表维护和维修程序 8.8. mysqldump:数据库备份程序 8.9. mysqlhotcopy:数据库备份程序 8.10. mysqlimport:数据导入程序 8.11. mysqlshow-...

    mysql官方中文参考手册

    8.6. mysqlbinlog:用于处理二进制日志文件的实用工具 8.7. mysqlcheck:表维护和维修程序 8.8. mysqldump:数据库备份程序 8.9. mysqlhotcopy:数据库备份程序 8.10. mysqlimport:数据导入程序 8.11. mysqlshow-...

    MYSQL中文手册

    8.6. mysqlbinlog:用于处理二进制日志文件的实用工具 8.7. mysqlcheck:表维护和维修程序 8.8. mysqldump:数据库备份程序 8.9. mysqlhotcopy:数据库备份程序 8.10. mysqlimport:数据导入程序 8.11. ...

    MySQL 5.1参考手册中文版

    8.6. mysqlbinlog:用于处理二进制日志文件的实用工具 8.7. mysqlcheck:表维护和维修程序 8.8. mysqldump:数据库备份程序 8.9. mysqlhotcopy:数据库备份程序 8.10. mysqlimport:数据导入程序 8.11. ...

    MySQL 5.1参考手册

    8.6. mysqlbinlog:用于处理二进制日志文件的实用工具 8.7. mysqlcheck:表维护和维修程序 8.8. mysqldump:数据库备份程序 8.9. mysqlhotcopy:数据库备份程序 8.10. mysqlimport:数据导入程序 8.11. mysqlshow-...

    windows实用dos命令大全

    /W的使用:加上/W只显示文件名,至于文件大小及建立的日期和时间则都省略。加上参数后,每行可以显示五个文件名。  PATH——路径设置命令  1.功能:设备可执行文件的搜索路径,只对文件有效。  2.类型:内部...

    Oracle9i的init.ora参数中文说明

    说明: 指定一对值 (UTC,TZD), 设置 TIME WITH TIME ZONE 数据类型的默认值, 该数据类型包含 HOUR, MINUTE, SECOND, TIMEZONE_HOUR 和 TIMEZONE_MINUTE 这几个日期时间字段。UTC 是世界时而 TZD 是当地时区。 语法: ...

    MySQL 5.1参考手册 (中文版)

    8.6. mysqlbinlog:用于处理二进制日志文件的实用工具 8.7. mysqlcheck:表维护和维修程序 8.8. mysqldump:数据库备份程序 8.9. mysqlhotcopy:数据库备份程序 8.10. mysqlimport:数据导入程序 8.11. mysqlshow-...

    MySQL 5.1官方简体中文参考手册

    8.6. mysqlbinlog:用于处理二进制日志文件的实用工具 8.7. mysqlcheck:表维护和维修程序 8.8. mysqldump:数据库备份程序 8.9. mysqlhotcopy:数据库备份程序 8.10. mysqlimport:数据导入程序 8.11. mysqlshow-...

    网络端口查询

    139端口:139端口是为“NetBIOS Session Service”提供的,主要用于提供Windows文件和打印机共享以及Unix中的Samba服务。 143端口:143端口主要是用于“Internet Message Access Protocol”v2(Internet消息访问协议...

Global site tag (gtag.js) - Google Analytics