当前位置: 首页 > news >正文

网站域名后缀区别石家庄网站建设吧

网站域名后缀区别,石家庄网站建设吧,しょうじょ少女视频,中英文网站栏目修改文章目录 1.日期问题出现原因以及解决方案概述1.图示2.三种解决方案概述1.对于表单数据 application/x-www-form-urlencoded2.对于JSON数据1.使用JsonFormat注解2.自定义Jackson日期转换配置 2.解决方案common-web-starter1.目录2.BaseController.java 使用InitBinder解决表单数… 文章目录 1.日期问题出现原因以及解决方案概述1.图示2.三种解决方案概述1.对于表单数据 application/x-www-form-urlencoded2.对于JSON数据1.使用JsonFormat注解2.自定义Jackson日期转换配置 2.解决方案common-web-starter1.目录2.BaseController.java 使用InitBinder解决表单数据的日期转换问题3.JacksonConfig.java 自定义Jackson日期转换配置4.DateUtils.java 日期转换工具类5.WebAutoConfiguration.java 导入JacksonConfig配置类6.spring.factories 指定自动配置类 1.日期问题出现原因以及解决方案概述 1.图示 2.三种解决方案概述 1.对于表单数据 application/x-www-form-urlencoded 使用InitBinder将日期JSON字符串转化为Java中的Date对象 2.对于JSON数据 1.使用JsonFormat注解 使用JsonFormat(pattern “yyyy-MM-dd HH:mm:ss”, timezone “GMT8”)注解指定反序列化和序列化的格式 2.自定义Jackson日期转换配置 2.解决方案 common-web-starter 1.目录 2.BaseController.java 使用InitBinder解决表单数据的日期转换问题 package com.sunxiansheng.web.base;import com.sunxiansheng.web.response.RespBeanEnum; import com.sunxiansheng.web.response.Result; import com.sunxiansheng.web.utils.DateUtils; import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.annotation.InitBinder;import java.beans.PropertyEditorSupport; import java.util.Date;/*** Description: Controller层基类** Author sun* Create 2024/10/26 09:48* Version 1.0*/ public class BaseController {/*** 将前台传递过来的日期格式的字符串自动转化为Date类型* 注意只对表单参数application/x-www-form-urlencoded或查询参数生效对于json格式的请求不生效*/InitBinderpublic void initBinder(WebDataBinder binder) {// Date 类型转换binder.registerCustomEditor(Date.class, new PropertyEditorSupport() {Overridepublic void setAsText(String text) {setValue(DateUtils.parseDate(text));}});}/*** 成功** return*/public ResultObject ok() {return Result.ok();}/*** 失败** return*/public ResultObject fail() {return Result.fail();}/*** 失败自定义消息** param message* return*/public ResultObject fail(String message) {return Result.fail(message);}/*** 失败自定义状态码和消息** param code* param message* return*/public ResultObject fail(int code, String message) {return Result.fail(code, message);}/*** 失败自定义枚举** param respBeanEnum* return*/public ResultObject fail(RespBeanEnum respBeanEnum) {return Result.fail(respBeanEnum);} }3.JacksonConfig.java 自定义Jackson日期转换配置 package com.sunxiansheng.web.config;import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonDeserializer; import com.fasterxml.jackson.databind.module.SimpleModule; import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer; import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer; import com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer; import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer; import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer; import org.springframework.boot.autoconfigure.AutoConfigureBefore; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer; import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;import java.io.IOException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Locale; import java.util.TimeZone;/*** 自定义日期转换配置优先级总结* p* 1. JsonFormat 注解最高优先级。* 2. 自定义序列化和反序列化器优先于全局配置但在检测到 JsonFormat 时会让位于注解逻辑。* 3. jacksonObjectMapperBuilder.simpleDateFormat()默认全局配置优先级最低。** author sunxiansheng*/ Configuration ConditionalOnClass(com.fasterxml.jackson.databind.ObjectMapper.class) AutoConfigureBefore(JacksonAutoConfiguration.class) public class JacksonConfig {Beanpublic Jackson2ObjectMapperBuilderCustomizer customizer() {return jacksonObjectMapperBuilder - {// 设置地区为中国确保格式符合中文区域习惯jacksonObjectMapperBuilder.locale(Locale.CHINA);// 设置时区为系统默认时区避免时区偏差jacksonObjectMapperBuilder.timeZone(TimeZone.getTimeZone(ZoneId.systemDefault()));/*** • 全局设置默认的日期格式作用于 Date 类型的字段不包括 LocalDate、LocalDateTime 等 Java 8 时间类。* • 只影响 Jackson 自动序列化和反序列化时的默认行为。* • 如果在实体类的字段上没有使用 JsonFormat 注解Jackson 会采用这里设置的格式。*/jacksonObjectMapperBuilder.simpleDateFormat(yyyy-MM-dd HH:mm:ss);// 注册自定义 JavaTimeModule 模块处理 Java 8 日期时间类型和 Date 类型jacksonObjectMapperBuilder.modules(new JavaTimeModule());};}/*** JavaTimeModule 是一个自定义的 Jackson 模块用于序列化和反序列化 Java 8 日期时间类型。* • 覆盖默认的 Jackson 序列化和反序列化行为为 Date 类型字段提供自定义逻辑。* • 允许支持多个格式的反序列化例如通过自定义的 CustomDateDeserializer。*/public static class JavaTimeModule extends SimpleModule {public JavaTimeModule() {// 添加 LocalDateTime 类型的序列化和反序列化器确保格式为 yyyy-MM-dd HH:mm:ssthis.addSerializer(LocalDateTime.class,new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(yyyy-MM-dd HH:mm:ss)));this.addDeserializer(LocalDateTime.class,new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(yyyy-MM-dd HH:mm:ss)));// 添加 LocalDate 类型的序列化和反序列化器确保格式为 yyyy-MM-ddthis.addSerializer(LocalDate.class,new LocalDateSerializer(DateTimeFormatter.ofPattern(yyyy-MM-dd)));this.addDeserializer(LocalDate.class,new LocalDateDeserializer(DateTimeFormatter.ofPattern(yyyy-MM-dd)));// 添加 LocalTime 类型的序列化和反序列化器确保格式为 HH:mm:ssthis.addSerializer(LocalTime.class,new LocalTimeSerializer(DateTimeFormatter.ofPattern(HH:mm:ss)));this.addDeserializer(LocalTime.class,new LocalTimeDeserializer(DateTimeFormatter.ofPattern(HH:mm:ss)));// 添加对 Date 类型的自定义序列化和反序列化这里会覆盖上面默认的Date序列化器配置this.addSerializer(Date.class,new com.fasterxml.jackson.databind.ser.std.DateSerializer(false, new SimpleDateFormat(yyyy-MM-dd HH:mm:ss)));this.addDeserializer(Date.class, new CustomDateDeserializer());}}/*** 自定义的 Date 反序列化器支持多种格式的日期字符串解析。*/public static class CustomDateDeserializer extends JsonDeserializerDate {// 定义支持的日期格式列表private static final ListString DATE_PATTERNS Arrays.asList(yyyy-MM-dd, yyyy-MM-dd HH:mm:ss, yyyy-MM-dd HH:mm, yyyy-MM,yyyy/MM/dd, yyyy/MM/dd HH:mm:ss, yyyy/MM/dd HH:mm, yyyy/MM,yyyy.MM.dd, yyyy.MM.dd HH:mm:ss, yyyy.MM.dd HH:mm, yyyy.MM);Overridepublic Date deserialize(JsonParser p, com.fasterxml.jackson.databind.DeserializationContext ctxt)throws IOException, JsonProcessingException {String dateStr p.getText().trim();for (String pattern : DATE_PATTERNS) {try {// 尝试使用每个格式进行解析return new SimpleDateFormat(pattern).parse(dateStr);} catch (ParseException e) {// 如果解析失败继续尝试下一个格式}}// 如果所有格式都不匹配抛出异常throw new IOException(Invalid date format: dateStr);}} }4.DateUtils.java 日期转换工具类 package com.sunxiansheng.web.utils;import org.apache.commons.lang3.time.DateFormatUtils;import java.lang.management.ManagementFactory; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.*; import java.util.Date;/*** 时间工具类*/ public class DateUtils extends org.apache.commons.lang3.time.DateUtils {public static String YYYY yyyy;public static String YYYY_MM yyyy-MM;public static String YYYY_MM_DD yyyy-MM-dd;public static String YYYYMMDDHHMMSS yyyyMMddHHmmss;public static String YYYY_MM_DD_HH_MM_SS yyyy-MM-dd HH:mm:ss;private static String[] parsePatterns {yyyy-MM-dd, yyyy-MM-dd HH:mm:ss, yyyy-MM-dd HH:mm, yyyy-MM,yyyy/MM/dd, yyyy/MM/dd HH:mm:ss, yyyy/MM/dd HH:mm, yyyy/MM,yyyy.MM.dd, yyyy.MM.dd HH:mm:ss, yyyy.MM.dd HH:mm, yyyy.MM};/*** 获取当前Date型日期** return Date() 当前日期*/public static Date getNowDate() {return new Date();}/*** 获取当前日期, 默认格式为yyyy-MM-dd** return String*/public static String getDate() {return dateTimeNow(YYYY_MM_DD);}public static final String getTime() {return dateTimeNow(YYYY_MM_DD_HH_MM_SS);}public static final String dateTimeNow() {return dateTimeNow(YYYYMMDDHHMMSS);}public static final String dateTimeNow(final String format) {return parseDateToStr(format, new Date());}public static final String dateTime(final Date date) {return parseDateToStr(YYYY_MM_DD, date);}public static final String parseDateToStr(final String format, final Date date) {return new SimpleDateFormat(format).format(date);}public static final Date dateTime(final String format, final String ts) {try {return new SimpleDateFormat(format).parse(ts);} catch (ParseException e) {throw new RuntimeException(e);}}/*** 日期路径 即年/月/日 如2018/08/08*/public static final String datePath() {Date now new Date();return DateFormatUtils.format(now, yyyy/MM/dd);}/*** 日期路径 即年/月/日 如20180808*/public static final String dateTime() {Date now new Date();return DateFormatUtils.format(now, yyyyMMdd);}/*** 日期型字符串转化为日期 格式*/public static Date parseDate(Object str) {if (str null) {return null;}try {return parseDate(str.toString(), parsePatterns);} catch (ParseException e) {return null;}}/*** 获取服务器启动时间*/public static Date getServerStartDate() {long time ManagementFactory.getRuntimeMXBean().getStartTime();return new Date(time);}/*** 计算相差天数*/public static int differentDaysByMillisecond(Date date1, Date date2) {return Math.abs((int) ((date2.getTime() - date1.getTime()) / (1000 * 3600 * 24)));}/*** 计算时间差** param endDate 最后时间* param startTime 开始时间* return 时间差天/小时/分钟*/public static String timeDistance(Date endDate, Date startTime) {long nd 1000 * 24 * 60 * 60;long nh 1000 * 60 * 60;long nm 1000 * 60;// long ns 1000;// 获得两个时间的毫秒时间差异long diff endDate.getTime() - startTime.getTime();// 计算差多少天long day diff / nd;// 计算差多少小时long hour diff % nd / nh;// 计算差多少分钟long min diff % nd % nh / nm;// 计算差多少秒//输出结果// long sec diff % nd % nh % nm / ns;return day 天 hour 小时 min 分钟;}/*** 增加 LocalDateTime Date*/public static Date toDate(LocalDateTime temporalAccessor) {ZonedDateTime zdt temporalAccessor.atZone(ZoneId.systemDefault());return Date.from(zdt.toInstant());}/*** 增加 LocalDate Date*/public static Date toDate(LocalDate temporalAccessor) {LocalDateTime localDateTime LocalDateTime.of(temporalAccessor, LocalTime.of(0, 0, 0));ZonedDateTime zdt localDateTime.atZone(ZoneId.systemDefault());return Date.from(zdt.toInstant());} }5.WebAutoConfiguration.java 导入JacksonConfig配置类 6.spring.factories 指定自动配置类
http://www.dnsts.com.cn/news/213301.html

相关文章:

  • 公司网站建设公司php做网站需要注意什么
  • 中华智能自建代理网站做网站市场分析
  • 专业做酒店网站国家域名注册中心
  • 网站建设工程师职责网站备案有幕布
  • 西安企业自助建站企业免费自助建站系统
  • 东港建站公司玉溪网站建设公司
  • 电子商务网站开发与应用论文邢台网站制作市场
  • 河南网站推广优化多少钱的品质网站建设
  • 铁总建设函网站动漫制作专业毕业答辩是什么内容
  • 网站开发 前端清风夏邑进入公众号
  • 网站一般宽度郑州app开发
  • 建网站app需要多少钱萝岗网站开发
  • 桂林 网站 建设中文外贸网站建设
  • 企业网站建设代理加盟自己做网站系统首选平台
  • 中山网站建设是什么意思最好的营销型网站建设公司
  • 设计商城网站 优帮云wordpress文章修改大小
  • 绵阳 网站开发 公司景德镇网站建设哪家口碑好
  • 湛江定制建站网站验证码怎么做的
  • 手机网站建设czyzj濮阳网页设计
  • php做电商网站安全性如何网站备案抽查通过
  • 优化网站排名费用广州网站建设索王道下拉
  • 二手购物网站策划书沐风模板WordPress
  • 企业网站首页怎么优化网络广告策略有哪些
  • 超链接网站怎么做wordpress网站有支付功能吗
  • 优化网站推广教程排名免费网站建设网站开发公司
  • 凡科企业网站如何建设什么是ip地址和域名
  • 环保网站建设公司哪家好wordpress图片文件夹更换
  • 好网站建设公司哪家好?网络搭建是干什么的
  • 招商加盟类网站模板网站主题旁边的图标怎么做的
  • 网站设计流行趋势成都公司注册多少钱