精华内容
下载资源
问答
  • Unix时间与Excel时间转换

    千次阅读 2017-06-29 16:47:24
    Unix时间转Excel时间 Excel时间=(Unix时间+8*3600)/86400+70*365+19 Excel时间转Unix时间 Unix时间=(Excel时间-70*365-19)*86400-8*3600

    可以先通过cout << vResult.vt << ",";查看读到的数据类型


    Unix时间转Excel时间

    Excel时间=(Unix时间+8*3600)/86400+70*365+19


    Excel时间转Unix时间

    Unix时间=(Excel时间-70*365-19)*86400-8*3600

    展开全文
  • excel 时间差计算方法

    千次阅读 2016-04-06 14:58:15
    在本文讲解excel 时间差之前,刚接触的朋友可以先看此文:《excel时间计算的基础知识》http://www.ittribalwo.com/article/429.html  文字总是枯燥的,用几个小练习来讲解excel 时间差的计算方法。对Excel感兴趣的...

           在本文讲解excel 时间差之前,刚接触的朋友可以先看此文:《excel时间计算的基础知识》http://www.ittribalwo.com/article/429.html

      文字总是枯燥的,用几个小练习来讲解excel 时间差的计算方法。对Excel感兴趣的朋友可加Excel学习交流群:284029260

      excel 时间差练习一:

    excel 时间差

      需要在B2和B3单元格进行excel 时间差计算。

      思路分析:两个时间差,用(时间2-时间1)*60*24得到分钟数。即(10:00-8:00)*60*24得到分钟。

      因为A2单元格两个时间在同一个单元格,需要提取出来,所以用下面的公式分别提取两个时间:

      =LEFT(A2,LEN(A2)-FIND("-",A2)-1),得到8:00。

      =RIGHT(A2,LEN(A2)-FIND("-",A2)),得到10:00。

      因此B2单元格的公式为:=(RIGHT(A2,LEN(A2)-FIND("-",A2))-LEFT(A2,FIND("-",A2)-1))*60*24,然后下拉复制公式。

      对于上面这种起止时间在一个单元格内的,excel 时间差的计算方法还可以使用下面的公式完成:

      方法1:=MIN((MID(A2,FIND("-",A2)+1,5)-LEFT(A2,{4,5})))*1440

      方法2:=(MID(A2,FIND("-",A2)+1,5)-LEFT(A2,5))*1440 

      方法3:=SUM(MID(A2,FIND("-","-"&A2,{1,2}),5)*{-1,1})*1440,这个为数组公式。

      excel 时间差练习二:

    excel 时间差2

      如何对上面所示的,形如"2010年10月02日11时15分"文本的单元格求时间差呢?

      两种方法:数组公式:=TEXT(SUM(MID(A1:B1,IF({1;0},FIND("日",A1:B1)+1,1),IF({1;0},99,FIND("日",A1:B1)))*{1,-1}),"y年m月d天h时m分")
      数组公式:=TEXT(SUM(MID(A1:B1,{1;12},11)*{1,-1}),"y年m月d天h时m分")

      excel 时间差练习三:

    excel 时间差3

      单位24小时营业,如果一个故障排除超过4小时,会受到客户投诉。当然,客户所计算的时候是排除了夜间23:00到第二天的8:00的休息时间,也就是这段时间不计考核,譬如开始时间为1:00,故障结束时间为9:00 虽然是历时8小时,但实际上在客户眼中,只算1小时,因此不算超时。AB列是派单时间和完成时间,计算在客户眼中,他们所用的工时是多少?

      C3单元格公式为:=IF(B3-A3-MIN(B3,INT(A3)+4/3)+MAX(A3,INT(B3)-1/24)>1/6,"超时","")

      D3单元格公式为:=B3-A3-MIN(B3,INT(A3)+4/3)+MAX(A3,INT(B3)-1/24)

      思路是这样的:
      1、终止时间减去起始时间,得到所用实际时长;
      2、MIN(B3,INT(A3)+4/3)——也就是A3时间第2天上午8点与B3相比,取小值;
        MAX(A3,INT(B3)-1/24)——也就是B3时间前1天夜里23点与A3相比,取大值;
      这样两数相减,就是头天夜里23点之后第2天上午8点之前的时间差。
      3、实际时长扣去该休息时段的中占据的无效时长。
      4/3——每天是24小时,1/3就是8小时,4/3就是1天又8小时,也就是第2天的8点。
      INT(B3)-1/24——从B3的0点扣去1小时,也就是前一天的23点。

    展开全文
  • Excel 日期时间格式讲解

    千次阅读 2017-11-03 15:24:29
    1.Excel中日期时间1.1 存储格式 Excel中日期时间以1900-1-1 00:00:00为起点 Excel中日期时间格式单元格类型为Numeric,表示Excel日期时间内部以double数值存储 double整数部分表示日期,表示自1900-1-1来的天数 ...

    1.Excel中日期时间

    1.1 存储格式

    • Excel中日期时间格式单元格类型为Numeric,表示Excel日期时间内部以double数值存储
    • Excel中日期时间以浮点值存储,以1900-01-01 00:00:00为起点
    • 浮点值整数部分代表日期,表示自1900-01-01起的天数
    • 浮点值小数部分代表时间
    • 浮点值1.0表示1900-01-01 00:00:00
    • Excel提供了将浮点值d转换为日期时间date的方法
      a. d在区间(-~, 0) 表示无效日期时间
      b. d在区间[0, 1) 转换为 日期时间区间[1899-12-31 00:00:00, 1900-01-01 00:00:00)
      c. d在区间[1, +~) 转换为 日期时间区间[1900-01-01 00:00:00, yyyy-MM-dd HH:mm:ss)

    • Excel提供了将日期时间date转换为浮点值d的方法
      a. date在区间(-~, 1900-01-01 00:00:00) 转换为 d = -1,表示无效日期时间
      b. date = 1900-01-01 00:00:00 转换为 d = 1.0
      c. date在区间(1900-01-01 00:00:00, +~) 转换为 d > 1.0
      这里写图片描述

    1.2 日期时间转double方法

    org.apache.poi.ss.usermodel.DateUtil

    /**
     * 将一个给的的日期转换为一个double类型的数值,代表日期在Excel内部的表现形式
     * double的整数部分表示自1900年1月1日以来的天数,小数表示时分秒
     * @param date : date
     * @param use1904windowing : true-使用1904年的日期窗口,false-使用1900年的日期窗口
     * @return 返回日期的Excel表示(如果错误 -检查小于0.1, 返回-1)
     * */
    public static double getExcelDate(Date date) // 默认使用1900窗口
    public static double getExcelDate(Date date, boolean use1904windowing)

    1.3 日期时间转double实例

    package org.apache.poi.util;
    
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    import org.apache.poi.ss.usermodel.DateUtil;
    
    public class Date2DoubleTest {
    
        public static void main(String[] args) throws Exception {
            System.out.println("小于1900-01-01 00:00:00的日期返回-1");
            System.out.println("日期1800-01-01 00:00:00 转换为double值为: " + formatDouble("1800-01-01 00:00:00"));
            System.out.println("日期1899-01-01 00:00:00 转换为double值为: " + formatDouble("1899-01-01 00:00:00"));
            System.out.println("日期1899-12-31 23:24:25 转换为double值为: " + formatDouble("1899-12-31 23:24:25"));
            System.out.println("日期1900-01-01 00:00:00 转换为double值为: " + formatDouble("1900-01-01 00:00:00"));
            System.out.println("日期1900-01-01 11:11:11 转换为double值为: " + formatDouble("1900-01-01 11:11:11"));
            System.out.println("日期1900-01-01 22:22:22 转换为double值为: " + formatDouble("1900-01-01 22:22:22"));
            System.out.println("日期1900-01-01 23:22:22 转换为double值为: " + formatDouble("1900-01-01 23:22:22"));
            System.out.println("日期1900-01-02 00:00:00 转换为double值为: " + formatDouble("1900-01-02 00:00:00"));
            System.out.println("日期1900-01-03 00:00:00 转换为double值为: " + formatDouble("1900-01-03 00:00:00"));
            System.out.println("日期2017-11-12 13:14:15 转换为double值为: " + formatDouble("2017-11-12 13:14:15"));
        }
    
        public static double formatDouble (String dateStr) throws Exception {
            SimpleDateFormat dateFormat2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
            Date date = dateFormat2.parse(dateStr); 
            return formatDouble(date);
        }
    
        /**
         * 将java.util.Date转换为double值
         * */
        public static double formatDouble (Date date) {
            double excelDate = DateUtil.getExcelDate(date);
    
            return excelDate;
        }
    }

    执行结果:

    小于1900-01-01 00:00:00的日期返回-1
    日期1800-01-01 00:00:00 转换为double值为: -1.0
    日期1899-01-01 00:00:00 转换为double值为: -1.0
    日期1899-12-31 23:24:25 转换为double值为: -1.0
    日期1900-01-01 00:00:00 转换为double值为: 1.0
    日期1900-01-01 11:11:11 转换为double值为: 1.466099537037037
    日期1900-01-01 22:22:22 转换为double值为: 1.9321990740740742
    日期1900-01-01 23:22:22 转换为double值为: 1.9738657407407407
    日期1900-01-02 00:00:00 转换为double值为: 2.0
    日期1900-01-03 00:00:00 转换为double值为: 3.0
    日期2017-11-12 13:14:15 转换为double值为: 43051.5515625

    这里写图片描述

    1.4 double转日期时间方法

    org.apache.poi.ss.usermodel.DateUtil

    /**
     * 将一个double类型的数值根据Excel内部日期格式转换为一个java.util.Date
     * 
     * 注意:
     * Excel日期和时间存储没有任何时区(TimeZone)信息
     * 如果默认的TimeZone使用了夏令时(Daylight Saving Time),则转换回Excel日期可能不会产生相同的值
     * 
     * @param date Excel内部日期值,一个double类型的数值
     * @param use1904windowing true-使用1904年的日期窗口,false-使用1900年的日期窗口
     * @param tz 对应的时区,如果为null,使用系统默认时区
     * @param roundSeconds 是否round最接近的秒,默认false
     * @return 日期的Java表示形式,如果日期不是有效的Excel日期,则为null
     * */
    public static Date getJavaDate(double date)
    public static Date getJavaDate(double date, boolean use1904windowing)
    public static Date getJavaDate(double date, TimeZone tz) // 使用时区tz去格式化日期
    public static Date getJavaDate(double date, boolean use1904windowing, TimeZone tz)
    public static Date getJavaDate(double date, boolean use1904windowing, TimeZone tz, boolean roundSeconds)

    1.5 double转日期时间实例

    package org.apache.poi.util;
    
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    import org.apache.poi.ss.usermodel.DateUtil;
    
    public class Double2DateTest {
        public static void main(String[] args) {
            /**
             * double转换为java.util.Date
             * */
            System.out.println("double :    -1.0                转换为日期时间为:  " + formatDate(-1));
            System.out.println("double :    0.00000000000001    转换为日期时间为:  " + formatDate(0.00000000000001));
            System.out.println("double :    0.55555555555555    转换为日期时间为:  " + formatDate(0.55555555555555));
            System.out.println("double :    0.77777777777777    转换为日期时间为:  " + formatDate(0.77777777777777));
            System.out.println("double :    1.0                 转换为日期时间为:  " + formatDate(1.0));
            System.out.println("double :    1.466099537037037   转换为日期时间为:  " + formatDate(1.466099537037037));
            System.out.println("double :    1.9321990740740742  转换为日期时间为:  " + formatDate(1.9321990740740742));
            System.out.println("double :    1.9738657407407407  转换为日期时间为:  " + formatDate(1.9738657407407407));
            System.out.println("double :    2.0                 转换为日期时间为:  " + formatDate(2.0));
            System.out.println("double :    3.0                 转换为日期时间为:  " + formatDate(3.0));
            System.out.println("double :    43051.5515625       转换为日期时间为:  " + formatDate(43051.5515625));
        }
    
        /**
         * 将double值转换为java.util.Date
         * 1. 负数               -> 小于0,表示无效日期
         * 2. 1                -> 1900-1-1 00:00:00
         * 3. 43081.5091898148 -> 2017-12-12 12:13:14
         * @param value 
         * */
        public static String formatDate(double value) {
            if (!DateUtil.isValidExcelDate(value)) {
                // value<0表示是无效日期
                return "小于0,表示无效日期";
            }
            // HH表示24进制,hh是12进制
            return formatDate(value, "yyyy-MM-dd HH:mm:ss");
        }
    
        public static String formatDate(double value, String formatString) {
            SimpleDateFormat sdf = new SimpleDateFormat(formatString);
    //      Date date = DateUtil.getJavaDate(value); 
            // 以1900-1-1 00:00::00为起点
            Date date = DateUtil.getJavaDate(value, false);
    
            // 以1900-1-1 00:00::00为起点
    //      Date date = DateUtil.getJavaDate(value, true);
    
            return sdf.format(date);
        }
    }

    执行结果:
    以1900-1-1 00:00:00为起点

    double :    -1.0                转换为日期时间为:  小于0,表示无效日期
    double :    0.00000000000001    转换为日期时间为:  1899-12-31 00:00:00
    double :    0.55555555555555    转换为日期时间为:  1899-12-31 13:20:00
    double :    0.77777777777777    转换为日期时间为:  1899-12-31 18:40:00
    double :    1.0                 转换为日期时间为:  1900-01-01 00:00:00
    double :    1.466099537037037   转换为日期时间为:  1900-01-01 11:11:11
    double :    1.9321990740740742  转换为日期时间为:  1900-01-01 22:22:22
    double :    1.9738657407407407  转换为日期时间为:  1900-01-01 23:22:22
    double :    2.0                 转换为日期时间为:  1900-01-02 00:00:00
    double :    3.0                 转换为日期时间为:  1900-01-03 00:00:00
    double :    43051.5515625       转换为日期时间为:  2017-11-12 13:14:15

    这里写图片描述

    2.Excel日期单元格样式

    • Excel支持日期单元格
    • 日期值对应的是Excel内部日期double值的证书部分,表示自1900-1-1以来的天数

    2.1 Excel日期样式

    使用Excel或WPS设置单元格样式,会看到已经定义了日期样式

    2.1.1 对话框-已定义日期样式

    这里写图片描述

    2.1.2 对话框-自定义日期样式

    这里写图片描述

    2.2 Excel中已定义日期样式

    [$-804]表示国家或地区(语言)编号,一般可以不填。
    如804 汉语 (中国)
    809 英语(英国)
    409 英语(美国)
    如果电脑上没有装相应的语言(可以设),把804改掉都不会影响显示结果。
    
    [$-F800]相对于是 yyyy-m-d"
    [$-F400]相对于是 h:mm:ss
    
    [dbnum1]是将阿拉伯数字转换为汉字,如:123转换为一二三
    [dbbun2]是转换成大写汉字,如:123转换为壹贰叁
    [dbnum3]是转换为全角数字,如:123转换为 123
    d代表日期之中的日,m日期中的月,y日期中的年,h日期中的小时,m日期中的分,s是日期中的秒
    
    [$-F800]dddd, mmmm dd, yyyy
    [DBNum1][$-804]yyyy"年"m"月"d"日";@
    [DBNum1][$-804]yyyy"年"m"月";@
    [DBNum1][$-804]m"月"d"日";@
    yyyy"年"m"月"d"日";@
    yyyy"年"m"月";@
    m"月"d"日";@
    [$-804]aaaa;@
    [$-804]aaa;@
    yyyy/m/d;@
    [$-409]yyyy/m/d h:mm AM/PM;@
    yyyy/m/d h:mm;@
    yy/m/d;@
    m/d;@
    m/d/yy;@
    mm/dd/yy;@
    [$-409]d-mmm;@
    [$-409]d-mmm-yy;@
    [$-409]dd-mmm-yy;@
    [$-409]mmm-yy;@
    [$-409]mmmm-yy;@
    [$-409]mmmm-yy;@
    [$-409]mmmmm;@
    [$-409]mmmmm-yy;@

    2.3 Excel 2007中日期样式存储格式

    2.3.1 当前Sheet日期单元格

    这里写图片描述

    2.3.2 当前Sheet存储XML

    这里写图片描述

    2.3.3 当前Sheet单元格样式存储XML

    这里写图片描述

    2.4 验证日期样式字符串

    org.apache.poi.ss.usermodel.DateUtil提供方法验证

    package org.apache.poi.util;
    
    import org.apache.poi.ss.usermodel.DateUtil;
    
    /**
     * 验证Excel中已定义的日期格式
     * org.apache.poi.ss.usermodel.DateUtil
     * 
     * [$-804]表示国家或地区(语言)编号,一般可以不填。
     * 如804 汉语 (中国)
     *  809 英语(英国)
     *  409 英语(美国)
     * 如果电脑上没有装相应的语言(可以设),把804改掉都不会影响显示结果。
     * 
     * [$-F800]相对于是 yyyy-m-d"
     * [$-F400]相对于是 h:mm:ss
     * 
     * [dbnum1]是将阿拉伯数字转换为汉字,如:123转换为一二三
     * [dbbun2]是转换成大写汉字,如:123转换为壹贰叁
     * [dbnum3]是转换为全角数字,如:123转换为 123
     * d代表日期之中的日,m日期中的月,y日期中的年,h日期中的小时,m日期中的分,s是日期中的秒
     * */
    public class DateFormatTest {
        public static void main(String[] args) {
            System.out.println("字符串 - [$-F800]dddd\\,\\ mmmm\\ dd\\,\\ yyyy  是否是日期格式: " + DateUtil.isADateFormat(176, "[$-F800]dddd\\,\\ mmmm\\ dd\\,\\ yyyy"));
            System.out.println("字符串 - [DBNum1][$-804]yyyy\"年\"m\"月\"d\"日 	 是否是日期格式: " + DateUtil.isADateFormat(177, "[DBNum1][$-804]yyyy\"年\"m\"月\"d\"日"));
            System.out.println("字符串 - [DBNum1][$-804]yyyy\"年\"m\"月\";@  	是否是日期格式: " + DateUtil.isADateFormat(178, "[DBNum1][$-804]yyyy\"年\"m\"月\";@"));
            System.out.println("字符串 - [DBNum1][$-804]m\"月\"d\"日\";@  	是否是日期格式: " + DateUtil.isADateFormat(179, "[DBNum1][$-804]m\"月\"d\"日\";@"));
            System.out.println("字符串 - yyyy\"年\"m\"月\"d\"日\";@       是否是日期格式: " + DateUtil.isADateFormat(180, "yyyy\"年\"m\"月\"d\"日\";@"));
            System.out.println("字符串 - yyyy\"年\"m\"月\";@             是否是日期格式: " + DateUtil.isADateFormat(181, "yyyy\"年\"m\"月\";@"));
            System.out.println("字符串 - m\"月\"d\"日\";@            是否是日期格式: " + DateUtil.isADateFormat(182, "m\"月\"d\"日\";@"));
            System.out.println("字符串 - [$-804]aaaa;@  			是否是日期格式: " + DateUtil.isADateFormat(183, "[$-804]aaaa;@"));
            System.out.println("字符串 - [$-804]aaa;@  			是否是日期格式: " + DateUtil.isADateFormat(184, "[$-804]aaa;@"));
            System.out.println("字符串 - yyyy/m/d;@            是否是日期格式: " + DateUtil.isADateFormat(185, "yyyy/m/d;@"));
            System.out.println("字符串 - [$-409]yyyy/m/d\\ h:mm\\ AM/PM;@    是否是日期格式: " + DateUtil.isADateFormat(186, "[$-409]yyyy/m/d\\ h:mm\\ AM/PM;@"));
            System.out.println("字符串 - yyyy/m/d\\ h:mm;@         是否是日期格式: " + DateUtil.isADateFormat(187, "yyyy/m/d\\ h:mm;@"));
            System.out.println("字符串 - yy/m/d;@              是否是日期格式: " + DateUtil.isADateFormat(188, "yy/m/d;@"));
            System.out.println("字符串 - m/d;@                 是否是日期格式: " + DateUtil.isADateFormat(189, "m/d;@"));
            System.out.println("字符串 - m/d/yy;@              是否是日期格式: " + DateUtil.isADateFormat(190, "m/d/yy;@"));
            System.out.println("字符串 - mm/dd/yy;@            是否是日期格式: " + DateUtil.isADateFormat(191, "mm/dd/yy;@"));
            System.out.println("字符串 - [$-409]d\\-mmm;@  			是否是日期格式: " + DateUtil.isADateFormat(192, "[$-409]d\\-mmm;@"));
            System.out.println("字符串 - [$-409]d\\-mmm\\-yy;@  		是否是日期格式: " + DateUtil.isADateFormat(193, "[$-409]d\\-mmm\\-yy;@"));
            System.out.println("字符串 - [$-409]dd\\-mmm\\-yy;@  		是否是日期格式: " + DateUtil.isADateFormat(194, "[$-409]dd\\-mmm\\-yy;@"));
            System.out.println("字符串 - [$-409]mmm\\-yy;@  		是否是日期格式: " + DateUtil.isADateFormat(195, "[$-409]mmm\\-yy;@"));
            System.out.println("字符串 - [$-409]mmmm\\-yy;@  		是否是日期格式: " + DateUtil.isADateFormat(196, "[$-409]mmmm\\-yy;@"));
            System.out.println("字符串 - [$-409]mmmmm;@  			是否是日期格式: " + DateUtil.isADateFormat(197, "[$-409]mmmmm;@"));
            System.out.println("字符串 - [$-409]mmmmm\\-yy;@  		是否是日期格式: " + DateUtil.isADateFormat(198, "[$-409]mmmmm\\-yy;@"));
        }
    }

    执行结果:

    字符串 - [$-F800]dddd\,\ mmmm\ dd\,\ yyyy  是否是日期格式: true
    字符串 - [DBNum1][$-804]yyyy"年"m"月"d"日     是否是日期格式: true
    字符串 - [DBNum1][$-804]yyyy"年"m"月";@     是否是日期格式: true
    字符串 - [DBNum1][$-804]m"月"d"日";@    是否是日期格式: true
    字符串 - yyyy"年"m"月"d"日";@         是否是日期格式: true
    字符串 - yyyy"年"m"月";@             是否是日期格式: true
    字符串 - m"月"d"日";@            是否是日期格式: true
    字符串 - [$-804]aaaa;@            是否是日期格式: false
    字符串 - [$-804]aaa;@             是否是日期格式: false
    字符串 - yyyy/m/d;@            是否是日期格式: true
    字符串 - [$-409]yyyy/m/d\ h:mm\ AM/PM;@    是否是日期格式: true
    字符串 - yyyy/m/d\ h:mm;@          是否是日期格式: true
    字符串 - yy/m/d;@              是否是日期格式: true
    字符串 - m/d;@                 是否是日期格式: true
    字符串 - m/d/yy;@              是否是日期格式: true
    字符串 - mm/dd/yy;@            是否是日期格式: true
    字符串 - [$-409]d\-mmm;@              是否是日期格式: true
    字符串 - [$-409]d\-mmm\-yy;@          是否是日期格式: true
    字符串 - [$-409]dd\-mmm\-yy;@         是否是日期格式: true
    字符串 - [$-409]mmm\-yy;@         是否是日期格式: true
    字符串 - [$-409]mmmm\-yy;@        是否是日期格式: true
    字符串 - [$-409]mmmmm;@           是否是日期格式: true
    字符串 - [$-409]mmmmm\-yy;@       是否是日期格式: true

    这里写图片描述

    3. Excel 时间单元格样式

    • Excel单元格也支持时间单元格
    • 时间值对应的是Excel内部时间double值的小数部分

    3.1 Excel时间样式

    使用Excel或WPS设置单元格样式,会看到已经定义了时间样式,我们主要讲解的就是这些时间样式:

    3.1.1 对话框-已定义时间样式

    这里写图片描述

    3.1.2 对话框-自定义时间样式

    这里写图片描述

    3.2 Excel中已定义时间样式

    两种设置时间样式一共有19种已经定义的时间样式,内置的时间样式索引小于50,自定义样式索引从164开始:

     - 索引         时间样式字符串
     - 18,       "h:mm AM/PM"  
     - 19,       "h:mm:ss AM/PM"  
     - 20,       "h:mm"  
     - 21,       "h:mm:ss"  
     - 22,       "m/d/yy h:mm"  
     - 45,       "mm:ss"  
     - 46,       "[h]:mm:ss"  
     - 47,       "mm:ss.0" 
     - 
     - 176    [DBNum1][$-804]上午/下午h"时"mm"分";@
     - 177    [DBNum1][$-804]h"时"mm"分";@
     - 178    [$-409]h:mm:ss\ AM/PM;@
     - 179    [$-409]h:mm\ AM/PM;@
     - 180    [$-F400]h:mm:ss\ AM/PM
     - 181    h:mm;@
     - 182    h:mm:ss;@
     - 183    h"时"mm"分";@
     - 184    h"时"mm"分"ss"秒";@
     - 185    上午/下午h"时"mm"分";@
     - 186    上午/下午h"时"mm"分"ss"秒";@ 

    3.3 Excel 2007中时间样式存储格式

    3.3.1 当前Sheet时间单元格

    这里写图片描述

    3.3.2 当前Sheet存储XML

    这里写图片描述

    3.3.3 当前Sheet单元格样式存储XML

    这里写图片描述

    3.4 验证时间样式字符串

    提供方法实现验证一个单元格是否为一个时间单元格:
    - 时间单元格原始值为double
    - 时间单元格样式为时间字符串
    这里提供方法解析单元格样式字符串,验证其是否为时间样式字符串,工具类:

    package org.apache.poi.util;
    
    import java.util.regex.Pattern;
    
    /**
     * 主要用于处理导入excel中日期时间格式, 
     * 参考org.apache.poi.ss.usermodel.DateUtil
     * */
    public class DateTimeUtil {
    
        protected DateTimeUtil() {
            // no instances of this class
        }
    
        // 描述无效的日期
    //  private static final int BAD_DATE = -1;
    
        public static final int SECONDS_PER_MINUTE = 60;
        public static final int MINUTES_PER_HOUR = 60;
        public static final int HOURS_PER_DAY = 24;
        // 一天等于86400秒
        public static final int SECONDS_PER_DAY = (HOURS_PER_DAY * MINUTES_PER_HOUR * SECONDS_PER_MINUTE);
    
        // 一天等于86400 * 1000毫秒
        public static final long DAY_MILLISECONDS = SECONDS_PER_DAY * 1000L;
    
    //  private static final Pattern TIME_SEPARATOR_PATTERN = Pattern.compile(":");
    
        /**
         * 符号. : 匹配除换行符 \n 之外的任何单字符
         * 符号* : 匹配前面的子表达式零次或多次
         * 符号+ : 匹配前面的子表达式一次或多次
         * 符号? : 匹配前面的子表达式零次或一次
         * 
         * *、 +限定符都是贪婪的,因为它们会尽可能多的匹配文字
         * 通过在 *、 + 或 ? 限定符之后放置 ?(*?、 +?、 ??),该表达式从"贪心"表达式转换为"非贪心"表达式或者最小匹配
         * */
    
        // ^[\$\-.*?] : 匹配以[$-开头,中间为除换行符 \n 之外的任何单字符,结尾为]的字符串,非贪心匹配
        private static final Pattern date_ptrn1 = Pattern.compile("^\\[\\$\\-.*?\\]");
    
        /**
         * 红色 : \u7ea2\u8272
         * 黑色 :\u9ed1\u8272
         * 黄色 :  \u9ec4\u8272
         * 绿色 : \u7eff\u8272
         * 白色 : \u9ed1\u8272
         * 蓝色 : \u84dd\u8272
         * 青色 : \u9752\u8272
         * 洋红 : \u6d0b\u7ea2
         * */
        // ^[[a-zA-Z]+] : 匹配以[开头, ]结尾, 中间至少一个字母的字符串,如颜色
        private static final Pattern date_ptrn2 = Pattern.compile("^\\[[a-zA-Z\u7ea2\u9ed1\u9ec4\u7eff\u84dd\u9752\u6d0b\u7ea2\u8272]+\\]");
    
        // [yYmMdDhHsS] : 匹配中括号里任一字母, 匹配一个
        private static final Pattern date_ptrn3a = Pattern.compile("[mhHsS]");
    
        /**
         * 为中文/日文日期格式添加Unicode编码:如2017 \u5e74 2 \u6708 7 \u65e5
         * Unicode编码  : 中文
         *    \u5e74 : 年
         *    \u6708 : 月
         *    \u65e5 : 日
         *    \u4e0a : 上
         *    \u4e0b : 下
         *    \u5348 : 午
         *    
         * ^[\[\]mhHsS\-T/时分秒(上午/下午),. :"\\]+0*[ampAMP/]*$
         * */
        private static final Pattern date_ptrn3b = Pattern.compile("^[\\[\\]yYmMdDhHsS\\-T/\u65f6\u5206\u79d2(\u4e0a\u5348/\u4e0b\u5348),. :\"\\\\]+0*[ampAMP/]*$");
    
        // ^\[([hH]+|[mM]+|[sS]+)] : 匹配以[开头, 以]结尾, 中间为时、分或秒的时间字符
        private static final Pattern date_ptrn4 = Pattern.compile("^\\[([hH]+|[mM]+|[sS]+)\\]");
    
        // 匹配以[DBNum1]、[DBNum2]或[DBNum3]开头的中文日期
        private static final Pattern date_ptrn5 = Pattern.compile("^\\[DBNum(1|2|3)\\]");
    
        /**
         * 性能优化的变量:
         * 如果一个相同的日期格式字符串被多次传递,避免重复检查DataUtil.isADateFormat(int, String)
         * https://issues.apache.org/bugzilla/show_bug.cgi?id=55611
         * */
        private static ThreadLocal<Integer> lastFormatIndex = new ThreadLocal<Integer>() {
            protected Integer initialValue() {
                return -1;
            }
        };
        private static ThreadLocal<String> lastFormatString = new ThreadLocal<String>();
        private static ThreadLocal<Boolean> lastCachedResult = new ThreadLocal<Boolean>();
    
        /**
         * 当前格式是否缓存过
         * @param formatString 格式化字符串
         * @param formatIndex 格式化索引
         * */
        private static boolean isCached(String formatString, int formatIndex) {
            String cachedFormatString = lastFormatString.get();
            return cachedFormatString != null && 
                         formatIndex == lastFormatIndex.get() && 
                         formatString.equals(cachedFormatString);
        }
    
        /**
         * 缓存当前格式
         * @param formatString 格式化字符串
         * @param formatIndex 格式化索引
         * @param cached 是否已经缓存过
         * */
        private static void cache(String formatString, int formatIndex, boolean cached) {
            lastFormatIndex.set(formatIndex);
            lastFormatString.set(formatString);
            lastCachedResult.set(Boolean.valueOf(cached));
        }
    
        /**
         * 检查给定格式ID及其格式String是否表示时间格式。
         * 1. 调用此方法之前org.apache.poi.ss.usermodel.DateUtil.isADateFormat(formatIndex, formatString)
         *      首先确保是一个日期格式
         * 2. 再检查是否为时间格式
         *
         * @param formatIndex 格式索引
         * @param formatString 格式字符串
         */
        public static boolean isADateTimeFormat(int formatIndex, String formatString) {
            if(isInternalDateTimeFormat(formatIndex)) {
                cache(formatString, formatIndex, true);
                return true;
            }
    
            if(formatString == null || formatString.length() == 0) {
                return false;
            }
    
            // 检查是否缓存过,提高性能
            if (isCached(formatString, formatIndex)) {
                return lastCachedResult.get();
            }
    
            String fs = formatString;
            final int length = fs.length();
            StringBuilder sb = new StringBuilder(length);
            for (int i = 0; i < length; i++) {
                char c = fs.charAt(i);
                if (i < length - 1) {
                    char nc = fs.charAt(i + 1);
                    if (c == '\\') {// 处理转义字符
                        switch (nc) {
                            case '-': // \-表示
                            case ',':
                            case '.':
                            case ' ':
                            case '\\':
                                // skip current '\' and continue to the next char
                                continue;
                        }
                    } else if (c == ';' && nc == '@') {// 跳过;@
                        i++;
                        continue;
                    }
                }
                sb.append(c);
            }
            fs = sb.toString();
    
            // short-circuit if it indicates elapsed time: [h], [m] or [s]
            if(date_ptrn4.matcher(fs).matches()){
                cache(formatString, formatIndex, true);
                return true;
            }
    
            // 处理以[DBNum1]、 [DBNum2]或[DBNum3]开头的时间格式:[DBNum1][$-804]h"时"mm"分";@
            fs = date_ptrn5.matcher(fs).replaceAll("");
    
            // 处理匹配[$-...]的时间格式:[$-F400]h:mm:ss\ AM/PM
            fs = date_ptrn1.matcher(fs).replaceAll("");
    
            // 匹配以[开头, ]结尾, 中间至少一个字母的字符串,如带颜色的时间格式:[Yellow]h:mm:ss AM/PM
            fs = date_ptrn2.matcher(fs).replaceAll("");
    
            // 日期格式为dd / mm / yy; [red] dd / mm / yy,只处理第一个
            final int separatorIndex = fs.indexOf(';');
            if(0 < separatorIndex && separatorIndex < fs.length()-1) {
                fs = fs.substring(0, separatorIndex);
            }
    
            // 处理时间格式
            if (! date_ptrn3a.matcher(fs).find()) {
                return false;
            }
    
            /**
             * 到了这里,检查它只是由以下组成:  m h s - \ /,。 :[] T
             * 可选地跟随AM / PM
             * */
            boolean result = date_ptrn3b.matcher(fs).matches();
            cache(formatString, formatIndex, result);
            return result;
        }
    
        /**
         * 给定的日期格式索引是否为Excel内置日期时间格式
         * @param format 日期格式索引
         */
        public static boolean isInternalDateTimeFormat(int format) {
            switch(format) {
                // Excel内部时间格式
                //          0x12,       "h:mm AM/PM"  
                //          0x13,       "h:mm:ss AM/PM"  
                //          0x14,       "h:mm"  
                //          0x15,       "h:mm:ss"  
                //          0x16,       "m/d/yy h:mm"  
                //          0x2d,       "mm:ss"  
                //          0x2e,       "[h]:mm:ss"  
                //          0x2f,       "mm:ss.0"  
                case 0x12:
                case 0x13:
                case 0x14:
                case 0x15:
                case 0x16:
                case 0x2d:
                case 0x2e:
                case 0x2f:
                    return true;
            }
            return false;
        }
    
        /**
         * 检查给定的double数值是否是有效的Excel日期
         * value>=0,表示是有效日期
         */
        public static boolean isValidExcelDate(double value) {
            return (value > -Double.MIN_VALUE);
        }
    
        /************************ 以下是org.apache.poi.ss.usermodel.DateUtil常用方法   ******************************/
    
        /**
         * 将一个给的的日期转换为一个double类型的数值,代表日期在Excel内部的表现形式
         * double的整数部分表示自1900年1月1日以来的天数,小数表示时分秒
         * @param date : date
         * @param use1904windowing : true-使用1904年的日期窗口,false-使用1900年的日期窗口
         * @return 返回日期的Excel表示(如果错误 -检查小于0.1, 返回-1)
         * */
    //  public static double getExcelDate(Date date) // 默认使用1900窗口
    //  public static double getExcelDate(Date date, boolean use1904windowing)
    
        /**
         * 将一个double类型的数值根据Excel内部日期格式转换为一个java.util.Date
         * 
         * 注意:
         * Excel日期和时间存储没有任何时区(TimeZone)信息
         * 如果默认的TimeZone使用了夏令时(Daylight Saving Time),则转换回Excel日期可能不会产生相同的值
         * 
         * @param date Excel内部日期值,一个double类型的数值
         * @param use1904windowing true-使用1904年的日期窗口,false-使用1900年的日期窗口
         * @param tz 对应的时区,如果为null,使用系统默认时区
         * @param roundSeconds 是否round最接近的秒,默认false
         * @return 日期的Java表示形式,如果日期不是有效的Excel日期,则为null
         * */
    //  public static Date getJavaDate(double date)
    //  public static Date getJavaDate(double date, boolean use1904windowing)
    //  public static Date getJavaDate(double date, TimeZone tz) // 使用时区tz去格式化日期
    //  public static Date getJavaDate(double date, boolean use1904windowing, TimeZone tz)
    //  public static Date getJavaDate(double date, boolean use1904windowing, TimeZone tz, boolean roundSeconds)
    
        /**
         * 将一个格式为HH:MM或HH:MM:SS的时间字符串转换为Excel日期格式的double数值,一个小数
         * @param timeStr 如12:12、 12:12:12,timeStr长度小于4或大于8都会抛出异常
         * @return 返回一个0~1之间的数
         */
    //  public static double convertTime(String timeStr)
    //  private static double convertTimeInternal(String timeStr)
    }

    测试类:

    package org.apache.poi.util;
    
    /**
     * 
     * 索引         时间样式字符串
     * 18,       "h:mm AM/PM"  
     * 19,       "h:mm:ss AM/PM"  
     * 20,       "h:mm"  
     * 21,       "h:mm:ss"  
     * 22,       "m/d/yy h:mm"  
     * 45,       "mm:ss"  
     * 46,       "[h]:mm:ss"  
     * 47,       "mm:ss.0" 
     * 
     * 176    [DBNum1][$-804]上午/下午h"时"mm"分";@
     * 177    [DBNum1][$-804]h"时"mm"分";@
     * 178    [$-409]h:mm:ss\ AM/PM;@
     * 179    [$-409]h:mm\ AM/PM;@
     * 180    [$-F400]h:mm:ss\ AM/PM
     * 181    h:mm;@
     * 182    h:mm:ss;@
     * 183    h"时"mm"分";@
     * 184    h"时"mm"分"ss"秒";@
     * 185    上午/下午h"时"mm"分";@
     * 186    上午/下午h"时"mm"分"ss"秒";@ 
     * */
    public class TimeFormatTest {
        public static void main(String[] args) {
            System.out.println("Excel已定义时间格式字符串: ");
            System.out.println("字符串 - h:mm AM/PM                             是否是时间格式: " + DateTimeUtil.isADateTimeFormat(18, "h:mm AM/PM"));
            System.out.println("字符串 - h:mm:ss AM/PM                          是否是时间格式: " + DateTimeUtil.isADateTimeFormat(19, "h:mm:ss AM/PM"));
            System.out.println("字符串 - h:mm                                   是否是时间格式: " + DateTimeUtil.isADateTimeFormat(20, "h:mm"));
            System.out.println("字符串 - h:mm:ss                                是否是时间格式: " + DateTimeUtil.isADateTimeFormat(21, "h:mm:ss"));
            System.out.println("字符串 - m/d/yy h:mm                            是否是时间格式: " + DateTimeUtil.isADateTimeFormat(22, "m/d/yy h:mm"));
            System.out.println("字符串 - mm:ss                                  是否是时间格式: " + DateTimeUtil.isADateTimeFormat(45, "mm:ss"));
            System.out.println("字符串 - [h]:mm:ss                              是否是时间格式: " + DateTimeUtil.isADateTimeFormat(46, "[h]:mm:ss"));
            System.out.println("字符串 - mm:ss.0                                                                                           是否是时间格式: " + DateTimeUtil.isADateTimeFormat(47, "mm:ss.0"));
            System.out.println("字符串 - [DBNum1][$-804]上午/下午h\"时\"mm\"分\";@  是否是时间格式: " + DateTimeUtil.isADateTimeFormat(176, "[DBNum1][$-804]上午/下午h\"时\"mm\"分\";@"));
            System.out.println("字符串 - [DBNum1][$-804]h\"时\"mm\"分\";@          是否是时间格式: " + DateTimeUtil.isADateTimeFormat(177, "[DBNum1][$-804]h\"时\"mm\"分\";@"));
            System.out.println("字符串 - [$-409]h:mm:ss\\ AM/PM;@               是否是时间格式: " + DateTimeUtil.isADateTimeFormat(178, "[$-409]h:mm:ss\\ AM/PM;@"));
            System.out.println("字符串 - [$-409]h:mm\\ AM/PM;@                  是否是时间格式: " + DateTimeUtil.isADateTimeFormat(179, "[$-409]h:mm\\ AM/PM;@"));
            System.out.println("字符串 - [$-F400]h:mm:ss\\ AM/PM                是否是时间格式: " + DateTimeUtil.isADateTimeFormat(180, "[$-F400]h:mm:ss\\ AM/PM"));
            System.out.println("字符串 - h:mm;@                                 是否是时间格式: " + DateTimeUtil.isADateTimeFormat(181, "h:mm;@"));
            System.out.println("字符串 - h:mm:ss;@                              是否是时间格式: " + DateTimeUtil.isADateTimeFormat(182, "h:mm:ss;@"));
            System.out.println("字符串 - h\"时\"mm\"分\";@                        是否是时间格式: " + DateTimeUtil.isADateTimeFormat(183, "h\"时\"mm\"分\";@"));
            System.out.println("字符串 - h\"时\"mm\"分\"ss\"秒\";@                是否是时间格式: " + DateTimeUtil.isADateTimeFormat(184, "h\"时\"mm\"分\"ss\"秒\";@"));
            System.out.println("字符串 - 上午/下午h\"时\"mm\"分\";@                 是否是时间格式: " + DateTimeUtil.isADateTimeFormat(185, "上午/下午h\"时\"mm\"分\";@"));
            System.out.println("字符串 - 上午/下午h\"时\"mm\"分\"ss\"秒\";@          是否是时间格式: " + DateTimeUtil.isADateTimeFormat(186, "上午/下午h\"时\"mm\"分\"ss\"秒\";@"));
    
            System.out.println();
            System.out.println("Excel自定义时间格式字符串:");
            System.out.println("字符串 - [红色]上午/下午h\"时\"mm\"分\"ss\"秒\";@          是否是时间格式: " + DateTimeUtil.isADateTimeFormat(187, "[红色]上午/下午h\"时\"mm\"分\"ss\"秒\";@"));
            System.out.println("字符串 - [绿色]yyyy/mm/dd hh:mm          是否是时间格式: " + DateTimeUtil.isADateTimeFormat(188, "[绿色]yyyy/mm/dd hh:mm"));
        }
    }

    执行结果:

    Excel已定义时间格式字符串: 
    字符串 - h:mm AM/PM                            是否是时间格式: true
    字符串 - h:mm:ss AM/PM                         是否是时间格式: true
    字符串 - h:mm                                  是否是时间格式: true
    字符串 - h:mm:ss                               是否是时间格式: true
    字符串 - m/d/yy h:mm                           是否是时间格式: true
    字符串 - mm:ss                                 是否是时间格式: true
    字符串 - [h]:mm:ss                             是否是时间格式: true
    字符串 - mm:ss.0                                                                                           是否是时间格式: true
    字符串 - [DBNum1][$-804]上午/下午h"时"mm"分";@  是否是时间格式: true
    字符串 - [DBNum1][$-804]h"时"mm"分";@          是否是时间格式: true
    字符串 - [$-409]h:mm:ss\ AM/PM;@              是否是时间格式: true
    字符串 - [$-409]h:mm\ AM/PM;@                 是否是时间格式: true
    字符串 - [$-F400]h:mm:ss\ AM/PM               是否是时间格式: true
    字符串 - h:mm;@                               是否是时间格式: true
    字符串 - h:mm:ss;@                            是否是时间格式: true
    字符串 - h"时"mm"分";@                         是否是时间格式: true
    字符串 - h"时"mm"分"ss"秒";@                   是否是时间格式: true
    字符串 - 上午/下午h"时"mm"分";@                 是否是时间格式: true
    字符串 - 上午/下午h"时"mm"分"ss"秒";@           是否是时间格式: true
    
    Excel自定义时间格式字符串:
    字符串 - [红色]上午/下午h"时"mm"分"ss"秒";@      是否是时间格式: true
    字符串 - [绿色]yyyy/mm/dd hh:mm                是否是时间格式: true

    这里写图片描述

    4.注意

    4.1 只有时间

    • 在Excel一个Sheet单元格中输入:11:12:13
    • 设置单元格样式为时间:h:mm:ss;@
    • 11:12:13单元格为Numeric类型,以double值存储,不是一个字符串单元格
      因为只有时间,而没有日期,所以double只有小数,整部部分为0,存储的值是一个小于1的数。
      当前Sheet的时间单元格:
      这里写图片描述
      存储:
      这里写图片描述
      这里写图片描述

    4.2 日期小于1900-1-1

    • 一个单元格为:1899/12/31,一个为:1900/1/1
    • 设置单元格样式为日期:yyyy”年”m”月”d”日”;@
    • 1899/12/31会以字符串存储,日期样式不起效
    • 1900/1/1会以double值存储,日期样式起效,显示为1900年1月1日
      这里写图片描述
    • sheet1.xml存储Sheet单元格信息
      这里写图片描述
    • SharedStrings.xml存储Excel中所有Sheet字符型单元格的文本值
      这里写图片描述
    • styles.xml存储Excel中所有Sheet的所有单元格样式信息
      这里写图片描述
    展开全文
  • 如何让excel单元格同时显示日期和时间 20 conang0112 | 浏览 9707 次 问题未开放回答 |举报 2015-07-23 最佳答案 1、打开excel,单元格右键-->设置单元格格式-->自定义-->yyyy/m/d/aaa。 2、确认后显示。 3...

    如何让excel单元格同时显示日期和时间 20
    conang0112 | 浏览 9707 次 问题未开放回答 |举报
    2015-07-23 最佳答案
    1、打开excel,单元格右键-->设置单元格格式-->自定义-->yyyy/m/d/aaa。

    2、确认后显示。

    3、自定义选择yyyy-mm-dd,即为同时显示日期和时间。

    本回答由电脑网络分类达人 李孝忠推荐

    本文转自9pc9com博客,原文链接:   http://blog.51cto.com/215363/2059282     如需转载请自行联系原作者



    展开全文
  • Excel常用时间函数

    千次阅读 2018-12-13 17:12:11
    1. 时间中提取日期 日期函数:DATE(YEAR(),MONTH(),DAY()) 时间 函数 日期(结果) 2018/12/13 16:41:20 =DATE(YEAR(A2),MONTH(A2),DAY(A2)) 2018/12/13 2. 计算周 周函数: =WEEKNUM...
  • Excel-时间函数将时间换成小时

    千次阅读 2020-09-02 11:01:51
    Excel算两日期时间间隔多少小时。
  • python读写excel时间的处理

    千次阅读 2019-11-27 19:46:27
    用python读写excel,当读写内容为时间时,会发现时间变成了浮点数,这篇文章记录了对于这种情况的处理。 将时间写入excel: dateFormat = xlwt.XFStyle() dateFormat.num_format_str = 'yyyy/mm/dd hh:mm:ss' ...
  • 1. 背景 要读取excel下面的数据到另一个表中,采用网上xlrd的date转换函数,会有ValueError: year is out of range错误...2. 解决,将excel时间格式转换为txt,读出的时间认为是字符串,直接读即可,不会出现浮点...
  • PHP读取Excel时间格式

    千次阅读 2018-11-29 15:23:37
    最近忙着做项目,写Excel导入时遇到个问题。先简单描述下: ...那上述问题到底是怎么回事呢? 原来是Excel 的日期格式在存储的时候的真实内容就是43101。 1900年1月1日就是Excel的第一天。同理,那我...
  • python 处理Excel 常见问题-读取Excel时间

    万次阅读 多人点赞 2017-10-17 17:38:07
    Excel 时间读取 当本地Excel存有一个时间列时,使用下面代码读取Excelimport xlrd book = xlrd.open_workbook('demo.xls') sheet = book.sheet_by_name('Sheet1') for row in range(sheet.nrows): print(sheet....
  • Excel 根据上下班时间计算加班时间

    千次阅读 2017-12-27 16:42:06
    Excel 根据上下班时间计算加班时间
  • 导入EXCEL 时间数据为小数 问题

    千次阅读 2017-04-07 20:36:22
    同事在做将EXCEL导入数据库功能时发现一个奇怪的问题:在EXCEL中,有一列数据明明呈现出时间格式,比如:18:35,但导到数据库中,居然一串长长的小数:0.7743055555555556,我靠,这是什么鬼。后来发现,原来EXCEL...
  • excel计算时间差值

    千次阅读 2018-11-05 16:24:00
    excel计算时间差值 2018/10/1 10:59:00 减去 2018/9/21 1:05:13 获取 多少天。 如1.2天。这种。 == 转载于:https://www.cnblogs.com/yue31313/p/9909778.html
  • Excel显示时间一般只显示年月日小时分钟怎么能够把秒也显示出来既如下显示 2007-04-11 12:00:00   将单元格格式设为"自定义",在"类型"框中输入:yyyy-mm-dd hh:mm:ss点"确定"。...
  • python3 处理Excel 常见问题-读取Excel时间 https://blog.csdn.net/fenghuajianshi/article/details/78263092
  • excel生成随机数时间

    千次阅读 2011-09-22 12:55:40
    人事,助理等岗位经常要统计员工的出勤,退勤时间等,经常会用到excel生成随间时间,下面就是一个随机时间生成函数。 要求: 1,A1列是出勤时间,要求在8:00~10:00之间。 2,B1列是退勤时间,要求在出勤...
  • Excel时间戳转时间

    千次阅读 2018-03-27 10:26:15
    Excel时间戳转时间 如果B列是秒 =(B2+8*3600)/86400+70*365+19 如果B列是毫秒 =(B2/1000+8*3600)/86400+70*365+19
  • 前言(自言自语) ummm…昨天帮整理数据,遇到了许多bug,虽然最终也没有成功使用这种方法(最后用matlab转换的…)...主要目的是将不同地区的时间转化为本地时间(我们当然就是“北京时间”),以UT世界时转北京时...
  • phpexcel读取excel时间

    千次阅读 2013-08-07 20:26:25
    excel中的时间是从1900-01-01开始的,而unix时间戳是从1970-01-01开始的,详情见:http://jingyan.baidu.com/article/a501d80cc7e9f3ec620f5e7a.html 直接用phpexcel读取是得不到正确的unix时间戳的,网上很多方法...
  • Excel里面自动获取当前时间

    千次阅读 2019-10-15 10:34:41
    最近在做API的测试,URL增加了新的日期参数,本来应该指向当前月份,可是上个月的数据要在当月20号才有(9月的数据要在10月20号才有结果...查了一下,Excel获取时间有以下用法: 获取上两个月时间:=TEXT(EDATE(NOW...
  • Excel时间快捷键和显示

    千次阅读 2019-08-07 11:11:17
    (1)首先我们打开Excel (2)选择一个单元格,同时按住 ctrl键 + 分号键,便可以得到当前日期,但这样不符合我们的常规写法。 (3)选中列,然后鼠标右键单击,选择【设置单元格格式】 (4)选择【自定义...
  • 本文介绍几种excel教程中合并日期时间的方法,给大家参考一下。专业免费答疑各种Excel问题,群文件有视频教程,对Excel感兴趣的朋友可加Excel学习交流群:284029260 excel合并日期时间实例一: excel合并...
  • strtotime(gmdate('Y-m-d H:i',intval(($excel_time_value - 25569) * 3600 * 24)))
  • 从数据库中导出的时间和数字在excel中可能显示成以下情况,变成了某种表示法,看不到细节,于是想转换成常见格式 将时间变成“年月日 时分秒毫秒” ①选中此列 ②打开自定义→其他数字格式 ③自定义时间格式 ...
  • EXCEL篇—时间序列分析(季节指数法)

    万次阅读 多人点赞 2019-08-13 13:35:42
    之前跟大家一起分享了如何用EXCEL进行回归分析,现在跟大家一起来学习一下如何用EXCEL时间序列分析。 在百科里,时间序列分析分析的解释是这样的:时间序列(或称动态数列)是指将同一统计指标的数值按其发生的...
  • 使用table2excel导出时间问题

    千次阅读 2018-02-14 22:42:28
    )进行转化,所以在存储的时候之间存成String类型,结果发现在使用table2excel导出的时候,时间出现了问题。然而查看之前的是java.util.Date类型的数据转化成的时间类型导出的时间是没有问题的,所以发现这个肯定是...
  • Excel中时间戳转换时间

    千次阅读 2017-07-24 16:23:22
    通过序列化保存到redis中的对象,时间也变成了时间戳,单位为ms,redis通过lua脚本获取的...Excel时间实际上是序列值,它从1900-1-1为1开始,没过一天序列值加1。 Excel时间戳实际上是秒数,它从1970-1-1 00:00:00 UTC
  • PHP读取Excel时间日期格式

    千次阅读 2018-07-25 15:23:21
    读出的时间是天数 excel 的日期是从 1900-01-01 开始计算的(php 是从 1970-01-01) 两者间有一个天数差 25569 时间是格林威治时间 所以有 PHP code? 1 2 3 $d = 25569; $t =...
  • Excel怎么数字自动转换为时间

    千次阅读 2011-06-07 16:41:00
    转自http://www.yqdown.com/bangongruanjian/Excel/1168.htm  Excel软件相信大家都经常会使用到, 但是Excel本身的许多默认设置可能在使用中给新手造成许多的困难, 比如默认的数字转换成时间的设置就非常的许多...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 172,318
精华内容 68,927
关键字:

怎样让excel时间