精华内容
下载资源
问答
  • 时间格式化
    千次阅读
    2022-04-19 13:16:36

    Pandas日期时间格式化

    当进行数据分析时,我们会遇到很多带有日期、时间格式的数据集,在处理这些数据集时,可能会遇到日期格式不统一的问题,此时就需要对日期时间做统一的格式化处理。比如“Wednesday, June 6, 2020”可以写成“6/6/20”,或者写成“06-06-2020。

    日期格式化符号

    在对时间进行格式化处理时,它们都有固定的表示格式,比如小时的格式化符号为%H ,分钟简写为%M ,秒简写为%S。下表对常用的日期格式化符号做了总结:

    日期格式化符号

    符号说明
    %y两位数的年份表示(00-99)
    %Y四位数的年份表示(000-9999)
    %m月份(01-12)
    %d月内中的一天(0-31)
    %H24小时制小时数(0-23)
    %I12小时制小时数(01-12)
    %M分钟数(00=59)
    %S秒(00-59)
    %a本地英文缩写星期名称
    %A本地英文完整星期名称
    %b本地缩写英文的月份名称
    %B本地完整英文的月份名称
    %w星期(0-6),星期天为星期的开始
    %W一年中的星期数(00-53)星期一为星期的开始
    %x本地相应的日期表示
    %X本地相应的时间表示
    %Z当前时区的名称
    %U一年中的星期数(00-53)星期天为星期的开始
    %j年内的一天(001-366)
    %c本地相应的日期表示和时间表示

    Python处理

    Python 内置的 strptime() 方法能够将字符串日期转换为 datetime 类型,下面看一组示例:

    from datetime import datetime
    #将日期定义为字符串    
    date_str1 = 'Wednesday, July 18, 2020' 
    date_str2 = '18/7/20' 
    date_str3 = '18-07-2020'  
    #将日期转化为datetime对象 
    dmy_dt1 = datetime.strptime(date_str1, '%A,%B%d,%Y') 
    dmy_dt2 = datetime.strptime(date_str2, '%d/%m/%y') 
    dmy_dt3 = datetime.strptime(date_str3, '%d-%m-%Y')  
    #处理为相同格式,并打印输出
    print(dmy_dt1) 
    print(dmy_dt2) 
    print(dmy_dt3) 
    

    输出结果:

    2020-07-18 00:00:00
    2020-07-18 00:00:00
    2020-07-18 00:00:00
    

    注意:strftime() 可以将 datetime 类型转换为字符串类型,恰好与 strptime() 相反。

    Pandas处理

    除了使用 Python 内置的 strptime() 方法外,你还可以使用 Pandas 模块的 pd.to_datetime() 和 pd.DatetimeIndex() 进行转换。

    1) to_datetime()

    通过 to_datetime() 直接转换为 datetime 类型

    import pandas as pd
    import numpy as np
    date = ['2012-05-06 11:00:00','2012-05-16 11:00:00']
    pd_date=pd.to_datetime(date)
    df=pd.Series(np.random.randn(2),index=pd_date)
    

    输出结果:

    2012-05-06 11:00:00    0.189865
    2012-05-16 11:00:00    1.052456
    dtype: float64
    

    2) DatetimeIndex()

    使用 Datetimeindex() 函数设置时间序,示例如下:

    date = pd.DatetimeIndex(['1/1/2008', '1/2/2008', '1/3/2008', '1/4/2008', '1/5/2008'])
    dt = pd.Series(np.random.randn(5),index = date)
    print(dt)
    

    输出结果:

    2008-01-01    1.965619
    2008-01-02   -2.897374
    2008-01-03    0.625929
    2008-01-04    1.204926
    2008-01-05    1.755680
    dtype: float64
    
    更多相关内容
  • java时间日期格式化工具类,最近新整理的目前各种会用到的关于日期的格式化
  • 主要介绍了springboot json时间格式化处理的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 易语言格式化时间日期源码,格式化时间日期,格式化日期时间
  • java日期格式化,针对各种日期进行不同的格式化,获取两个日期之间的日期(包含前后)获取未来 第 past 天的日期获取过去第几天的日期
  • 整理了一下SQL Server里面可能经常会用到的日期格式转换方法: 举例如下: select CONVERT(varchar, getdate(), 120 ) 2004-09-12 11:06:08 select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),'-','...
  • js通用日期格式化工具,直接引用该工具类就可以使用,方便快捷,建议大家收藏此工具类,该工具很好的解决了前端页面显示日期格式问题
  • 您可能感兴趣的文章:python日期时间转为字符串或者格式化输出的实例python中日期时间格式化输出的方法小结Python 时间操作例子和时间格式化参数小结Python简单格式化时间的方法【strftime函数】python 时间戳与...
  • JQuery 的一个日期格式化插件,支持"MM-dd HH:mm"等格式的设定;并支持日期时间转义,即距当前过去了多久,如"3分钟前","1天前","2周前".
  • 数据控件绑定时格式化日期方法/用DataBinder.Eval进行数据绑定时/直接用ToString方法转换日期显示格式/用String类转换日期显示格式等等,感兴趣的你了解下哦,或许对你学习时间格式化有所帮助
  • js日期时间格式化js日期时间格式化js日期时间格式化js日期时间格式化js日期时间格式化js日期时间格式化js日期时间格式化js日期时间格式化
  • MySQL时间日期格式化

    2012-12-22 16:52:06
    MySQL中时间日期格式化函数的例子。例如 TO_DAYS、DAYOFWEEK、WEEKDAY ... 等函数的使用。
  • spring boot全局日期格式化配置

    千次阅读 2021-12-09 15:41:50
    前端请求的日期格式的参数,你还在挨个配置@DateTimeFormat注解进行接受吗? 后端返回给前端的json响应中的时间格式,你还在挨个用@JsonFormat配置时间格式...本文教大家如何在spring boot下进行全局的日期格式化配置。

    前言

    前端请求的日期格式的参数,你还在挨个配置@DateTimeFormat注解进行接受吗?
    后端返回给前端的json响应中的时间格式,你还在挨个用@JsonFormat配置时间格式化吗?
    本文教大家如何在spring boot下进行全局的日期格式化配置。


    一、全局属性配置

    #json格式化全局配置
    spring.jackson.time-zone=GMT+8
    spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
    spring.jackson.default-property-inclusion=NON_NULL
    spring.mvc.date-format=yyyy-MM-dd HH:mm:ss
    

    说明:
    spring.jackson.time-zone 指定将响应结果进行json序列化时采用的默认时区
    spring.jackson.date-format 指定json序列化时 时间格式化采用的默认格式
    spring.jackson.default-property-inclusion 指定默认包含的熟悉,NON_NULL表示只序列化非空属性
    spring.mvc.date-format
    指定前端请求参数中日期格式参数和后端时间类型字段绑定时默认的格式,相当于@DateTimeFormat的全局配置

    注意⚠️:
    这里的spring.jackson.time-zone指定的时区一定要和mysql数据库连接中时区保持一致。

    二、自定义全局格式化配置

    经过上面的全局配置,已经能满足大部分场景,个别特殊的时间格式化的场景,我们可以单独采用@JsonFormat和@DateTimeFormat的实体中的日期字段进行配置。

    如果用户希望自定义控制json格式化,可参考如下配置:

    1、自定义格式化类CustomDateFormat

    /**
     * @Description JSON形式的全局时间类型转换器
     * 自定义的格式化类一定要继承SimpleDateFormat
     */
    public class CustomDateFormat extends SimpleDateFormat {
    
        private static final long serialVersionUID = -3201781773655300201L;
    
        public String defaultDateFormat;
    
        public String defaultTimeZone;
    
        public CustomDateFormat(String pattern,String defaultTimeZone){
            this.defaultDateFormat = pattern;
            this.defaultTimeZone = defaultTimeZone;
        }
    
        /**
         * 只要覆盖parse(String)这个方法即可
         */
        @Override
        public Date parse(String dateStr, ParsePosition pos) {
            return getDate(dateStr, pos);
        }
    
        /**
         * 前端传的日期字符串转Date
         * @param dateStr
         * @return
         */
        @Override
        public Date parse(String dateStr) {
            ParsePosition pos = new ParsePosition(0);
            return getDate(dateStr, pos);
        }
    
        //可以根据前端传递的时间格式自动匹配格式化
        private Date getDate(String dateStr, ParsePosition pos) {
            SimpleDateFormat sdf = null;
            if (StringUtils.isBlank(dateStr)) {
                return null;
            } else if (dateStr.matches("^\\d{4}-\\d{1,2}$")) {
                sdf = new SimpleDateFormat("yyyy-MM");
                return sdf.parse(dateStr, pos);
            } else if (dateStr.matches("^\\d{4}-\\d{1,2}-\\d{1,2}$")) {
                sdf = new SimpleDateFormat("yyyy-MM-dd");
                return sdf.parse(dateStr, pos);
            } else if (dateStr.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}$")) {
                sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
                return sdf.parse(dateStr, pos);
            } else if (dateStr.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}:\\d{1,2}$")) {
                sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                return sdf.parse(dateStr, pos);
            } else if (dateStr.length() == 23) {
                sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
                return sdf.parse(dateStr, pos);
            }
            return super.parse(dateStr, pos);
        }
    
        /**
         * 后端返回的日期格式化指定字符串
         * @param date
         * @param toAppendTo
         * @param fieldPosition
         * @return
         */
        @Override
        public StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition fieldPosition){
            return new StringBuffer(DateFormatUtils.format(date, defaultDateFormat, TimeZone.getTimeZone(defaultTimeZone)));
        }
    }
    

    2、自定义表单日期转化器

    /**
     * @Description 表单形式的全局时间类型转换器
     */
    @Configuration
    public class DateConverter implements Converter<String, Date> {
        private static final List<String> FORMARTS = new ArrayList<String>(4);
        static{
            FORMARTS.add("yyyy-MM");
            FORMARTS.add("yyyy-MM-dd");
            FORMARTS.add("yyyy-MM-dd HH:mm");
            FORMARTS.add("yyyy-MM-dd HH:mm:ss");
        }
    
    
        //可以根据前端传递的时间格式自动匹配格式化
        @Override
        public Date convert(String source) {
            String value = source.trim();
            if ("".equals(value)) {
                return null;
            }
            if(source.matches("^\\d{4}-\\d{1,2}$")){
                return parseDate(source, FORMARTS.get(0));
            }else if(source.matches("^\\d{4}-\\d{1,2}-\\d{1,2}$")){
                return parseDate(source, FORMARTS.get(1));
            }else if(source.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}$")){
                return parseDate(source, FORMARTS.get(2));
            }else if(source.matches("^\\d{4}-\\d{1,2}-\\d{1,2} {1}\\d{1,2}:\\d{1,2}:\\d{1,2}$")){
                return parseDate(source, FORMARTS.get(3));
            }else {
                throw new IllegalArgumentException("Invalid boolean value '" + source + "'");
            }
        }
    
        /**
         * 功能描述:格式化日期
         * @param dateStr   String 字符型日期
         * @param format    String 格式
         * @return Date 日期
         */
        public  Date parseDate(String dateStr, String format) {
            Date date=null;
            try {
                DateFormat dateFormat = new SimpleDateFormat(format);
                date = (Date) dateFormat.parse(dateStr);
            } catch (Exception e) {
            }
            return date;
        }
    }
    

    3、注册自定义的日期转化器

    @Slf4j
    @Configuration
    public class WebMvcConfigurer implements WebMvcConfigurer {
        private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        private static final DateTimeFormatter TIME_FORMATTER = DateTimeFormatter.ofPattern("HH:mm:ss");
    
    
        @Value("${spring.jackson.date-format:yyyy-MM-dd HH:mm:ss}")
        private String defaultDateFormat;
    
        @Value("${spring.jackson.time-zone:UTC}")
        private String defaultTimeZone;
    
        /**
         * JSON全局日期转换器
         */
        public MappingJackson2HttpMessageConverter getMappingJackson2HttpMessageConverter() {
            MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
            //设置日期格式
            ObjectMapper objectMapper = new ObjectMapper();
            objectMapper.setDateFormat(new CustomDateFormat(defaultDateFormat,defaultTimeZone));
    
            //支持LocalDateTime、LocalDate、LocalTime的序列化
            JavaTimeModule javaTimeModule = new JavaTimeModule();
            javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DATE_TIME_FORMATTER));
            javaTimeModule.addSerializer(LocalDate.class, new LocalDateSerializer(DATE_FORMATTER));
            javaTimeModule.addSerializer(LocalTime.class, new LocalTimeSerializer(TIME_FORMATTER));
            objectMapper.registerModule(javaTimeModule);
            // 设置时区
            objectMapper.setTimeZone(TimeZone.getTimeZone(defaultTimeZone));
            mappingJackson2HttpMessageConverter.setObjectMapper(objectMapper);
            //忽略不能识别的字段
            objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
            //忽略非空字段
            objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
            //设置中文编码格式
            List<MediaType> list = new ArrayList<MediaType>();
            list.add(MediaType.APPLICATION_JSON);
            mappingJackson2HttpMessageConverter.setSupportedMediaTypes(list);
            return mappingJackson2HttpMessageConverter;
        }
    
        /**
         *  注册转化器
         *  注意:List<HttpMessageConverter>的转化器是按顺序生效,前面的执行了,后面的就不会执行了
         * @param converters
         */
        @Override
        public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
           //将fastJson添加到视图消息转换器列表内
            converters.add(0,getMappingJackson2HttpMessageConverter());
        }
    
       /**
        * 表单全局日期转换器
        */
        @Bean
        public ConversionService getConversionService(DateConverter dateConverter){
            ConversionServiceFactoryBean factoryBean = new ConversionServiceFactoryBean();
            Set<Converter> converters = new HashSet<>();
            converters.add(dateConverter);
            factoryBean.setConverters(converters);
            return factoryBean.getObject();
        }
     }   
    

    这样采用自定义的方式,主要完成了自动根据时间参数的格式去匹配时间格式化完成Date类型的参数绑定

    四、补充

    前端传递到后端的时间,一般会带有时区,这就导致传递的是CST时区,保存到数据库自动转化成了UTC时区。出现传入时间和保存到数据库的时间不一致的问题。
    注意:
    保证数据库连接的时区也采用GMT+8能解决大部分时间不一致的问题。

    解决方案如下:
    方案一: (经验证,解决我的问题)
    将以下行添加到 application.properties 文件:

    spring.jackson.deserialization.ADJUST_DATES_TO_CONTEXT_TIME_ZONE = false
    

    原理主要是不将前端的时区传到后端。

    方式二:(参考,待验证)
    在 Application.java(带有 main 方法的类)中设置全局时区:

    @PostConstruct
    void started() {
        TimeZone.setDefault(TimeZone.getTimeZone("Etc/UTC"));
    }
    

    总结

    本文主要介绍了spring boot项目中,如何进行全局日期格式化的配置。
    并更进一步介绍了通过自定义格式化类,实现自动根据时间参数的格式去匹配时间格式化完成Date类型的参数绑定,
    帮助提高日常开发效率。

    展开全文
  • 日期格式化函数

    2018-04-07 14:46:29
    日期格式化函数
  • JS技能点--日期时间格式化

    千次阅读 2021-08-11 08:35:05
    在前端获取当前日期时间应该是高频使用场景了,但是JS提供的默认时间的格式往往不符合我们的需求,所以本文简单描述下JS下如何获取格式化日期时间

    点此查看全部文字教程、视频教程、源代码

    1. 前言

    在前端获取当前日期、时间应该是高频使用场景了,但是JS提供的默认时间的格式往往不符合我们的需求,所以本文简单描述下JS下如何获取格式化的日期时间。

    2. 格式化日期时间

    看如下代码:

    var date = new Date();
    var year= date.getFullYear();
    var month = date.getMonth() + 1;
    var day = date.getDate();
    var hour = date.getHours();
    var minute = date.getMinutes();
    var second = date.getSeconds();
    console.log([year, '-', month , '-', day].join(''));
    console.log([year, '-', month , '-', day, ' ', hour , ':', minute, ':', second ].join(''));
    

    通过new Date()即可获取当前时间,然后通过getFullYear等方法可以获取年月日、时分秒信息。

    此处需要注意月份取值是0-11,所以需要加1才能转换为1-12月份。

    最后我们输出常见的日期、日期时间的格式化字符串,一般来说日期使用-分割,时间使用:分割。

    3. 封装为函数

    也可以将获取格式化日期、格式化时间封装为函数。

    function getFormatDate(){
       var date = new Date();
       var year= date.getFullYear();
       var month = date.getMonth() + 1;
       var day = date.getDate();
       return [year, '-', month , '-', day].join('');
    }
    
    function getFormatDateTime(){
    	var date = new Date();
    	var year= date.getFullYear();
    	var month = date.getMonth() + 1;
    	var day = date.getDate();
    	var hour = date.getHours();
    	var minute = date.getMinutes();
    	var second = date.getSeconds();
    	return [year, '-', month , '-', day, ' ', hour , ':', minute, ':', second ].join('');
    }
    

    4. 小结

    注意JavaScript获取的日期时间是依赖于客户端的,有时候还需要在服务端进行下时间处理,毕竟服务端的时间我们是能保证相应的正确性的,而客户端嘛,更多的是讲究方便。

    展开全文
  • 个函数可以格式化日期的输入,包括中文等日期信息
  • Vue中时间日期格式化

    千次阅读 2022-05-03 09:11:48
    封装格式化时间方法 创建一个js文件formatDate.js,内容如下: //方法一 export function formatDate(val) { var date = new Date(Number(val)); //时间戳为10位需*1000,时间戳为13位的话不需乘1000 var Y = date...

    封装格式化时间方法
    创建一个js文件formatDate.js,内容如下:

    //方法一
    export function formatDate(val) {
        var date = new Date(Number(val)); //时间戳为10位需*1000,时间戳为13位的话不需乘1000
        var Y = date.getFullYear() + "-";
        var M = (date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1) + "-";
        var D = date.getDate() + " ";
        var h = date.getHours() + ":";
        var m = date.getMinutes() + ":";
        var s = (date.getSeconds() < 10 ? "0" + (date.getSeconds()) : date.getSeconds());
        return Y + M + D + h + m + s;
    }
    
    //方法二
    export function formatDates(date, fmt) {
        if (/(y+)/.test(fmt)) {
            fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
        }
        let o = {
            'M+': date.getMonth() + 1,
            'd+': date.getDate(),
            'h+': date.getHours(),
            'm+': date.getMinutes(),
            's+': date.getSeconds()
        };
        for (let k in o) {
            if (new RegExp(`(${k})`).test(fmt)) {
                let str = o[k] + '';
                fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? str : padLeftZero(str));
            }
        }
        return fmt;
    };
    
    function padLeftZero(str) {
        return ('00' + str).substr(str.length);
    }
    
    

    使用

     import {formatDate,formatDates} from '@/utils/formatDate'
     export default {
        data() {
          return {
            newsList: [],
           time: "1581672605401"
          }
        },
        created () {
          this.getNewsList()
        },
        filters: {
              //方法一
          fmtime(val) {
          return formatDate(val);
        },
          //使用封装中的方法二
          formatTime(val){
            let data=new Date(val)
            return  formatDates(data,'yyyy-MM-dd hh:mm');
          }
          },
        methods: { },
        },
    
      }
    
      <div v-for="d in newsList" :key="d.id">
              <div>{{time | fmtime}}</div>
                <span>{{d.createdDate | formatTime}}</span>
          </div>
    
    展开全文
  • Java8后 日期时间格式化及解析

    千次阅读 多人点赞 2022-03-28 14:58:47
    简介 在Java 8之前,我们使用SimpleDateFormat和DateFormat类来表示一种格式,这存在很多...JDK 8在新的DateTimeFormatter类中解决了该问题,该类可用于定义日期时间格式,例如“ yyyy-MM-dd HH:mm:SS”,用于指定
  • Oracle 日期格式化处理汇总

    千次阅读 2021-04-30 10:46:29
    一、 日期时间格式化应用TO_CHAR(日期格式化参数)1、返回任意有效分割符拼接的年月日字符串1.1、Select to_char(sysdate,'yyyy/mm/dd') From dual;*************************2015/04/29 (即返回以'/'分隔符连接...
  • 主要介绍了使用Python将字符串转换为格式化日期时间字符串,需要的朋友可以参考下
  • 格式化时间 ,cols: [[ {title:'序号',type: 'numbers', fixed: 'left'} // ,{field:'id', title:'ID', width:80, fixed: 'left', unresize: true,} ,{field:'sta_date', title:'日期',templet:"<div>{{...
  • react中日期时间格式化

    千次阅读 2020-12-23 08:43:09
    项目开发过程当中,总会遇到这样那样的时间格式化问题,那么在react中,日期时间格式化该怎么解决??react一种是直接使用插件 moment,方便...这里咱们先说一下moment插件的用法:插件1、使用 moment 日期格式化插...
  • 日期格式化

    千次阅读 2020-05-08 18:20:59
    日期格式化
  • JS日期格式化

    千次阅读 2022-05-16 14:14:06
    Js日期格式化
  • Java——时间日期格式化

    万次阅读 2019-06-20 17:15:23
    时间格式化类 SimpleDateFormat类 抽象类,工厂方法。 用于java.util.Date和java.sql.Date 线程不安全 字符串格式化为时间对象 .parse()方法 // 从字符串提取出日期 String strDate = "2008-11-17";...
  • 时间日期的组合格式化 编程要求 测试说明 任务描述 本关任务:接收给定的日期时间字符串,输出该日期是该年中的第几天、年月日、24 小时制的时、两位数的分钟以及两位数的秒钟。 相关知识 为了完成本关任务,你...
  • mysql中时间日期格式化

    千次阅读 2021-01-19 03:39:02
    这里是一个使用日期函数的例子。下面的查询选择了所有记录,其date_col的值是在最后30天以内:DATE_FORMAT(FROM_UNIXTIME('1997-10-04 22:23:00'),'%Y/%m/%d')mysql> SELECT something FROM tableWHERE TO_DAYS...
  • 主要为大家详细介绍了Js获取当前日期时间格式化代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • Java关于时间日期格式化的方法

    千次阅读 2021-02-12 21:11:46
    SimpleDateFormat 是一个以与语言环境相关的方式来格式化和分析日期的具体类。它允许进行格式化(日期 -> 文本)、分析(文本 -> 日期)和规范化。SimpleDateFormat 使得可以选择任何用户定义的日期-时间格式的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,535,558
精华内容 614,223
关键字:

时间格式化