2020-11-24

<div id="article_content" class="article_content clearfix">
        <link rel="stylesheet" href="https://csdnimg.cn/release/blogv2/dist/mdeditor/css/editerView/ck_htmledit_views-b5506197d8.css">
                <div id="content_views" class="markdown_views prism-dracula">
                    <svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
                        <path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path>
                    </svg>
                    <blockquote> 
 <p>前后数据交互过程中,Date类型的数据经常会出现类型映射转换的错误,为了达到业务的目标时间格式,通常会使用@JsonFormat 和 @DateTimeFormat,但是这两者有什么区别呢?</p> 
</blockquote> 
<p></p>
<div class="toc">
 <h3><a name="t0"></a><a name="t0"></a>目录</h3>
 <ul><li><ul><li><a href="#_3" target="_self">一、示例代码</a></li><li><a href="#JsonFormat_48" target="_self">二、@JsonFormat注解</a></li><li><a href="#DateTimeFormat_91" target="_self">三、@DateTimeFormat注解</a></li><li><a href="#JsonFormat__DateTimeFormat__133" target="_self">四、@JsonFormat 和 @DateTimeFormat 区别</a></li></ul>
 </li></ul>
</div>
<p></p> 
<h2><a name="t1"></a><a name="t1"></a><a id="_3"></a>一、示例代码</h2> 
<ul><li>先准备一个简单POJO,拥有Date类型的成员变量:</li></ul> 
<pre class="prettyprint"><code class="prism language-java has-numbering" οnclick="mdcp.copyCode(event)" style="position: unset;"><span class="token annotation punctuation">@Data</span>
<span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">DateEntity</span> <span class="token punctuation">{<!-- --></span>
    <span class="token keyword">private</span> Date date<span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<div class="hljs-button {2}" data-title="复制" data-report-click="{&quot;spm&quot;:&quot;1001.2101.3001.4259&quot;}"></div></code><ul class="pre-numbering" style=""><li style="color: rgb(153, 153, 153);">1</li><li style="color: rgb(153, 153, 153);">2</li><li style="color: rgb(153, 153, 153);">3</li><li style="color: rgb(153, 153, 153);">4</li></ul></pre> 
<ul><li>lombok依赖(版本任意):</li></ul> 
<pre class="prettyprint"><code class="prism language-java has-numbering" οnclick="mdcp.copyCode(event)" style="position: unset;"> <span class="token generics function"><span class="token punctuation">&lt;</span>dependency<span class="token punctuation">&gt;</span></span>
      <span class="token generics function"><span class="token punctuation">&lt;</span>groupId<span class="token punctuation">&gt;</span></span>org<span class="token punctuation">.</span>projectlombok<span class="token operator">&lt;</span><span class="token operator">/</span>groupId<span class="token operator">&gt;</span>
      <span class="token generics function"><span class="token punctuation">&lt;</span>artifactId<span class="token punctuation">&gt;</span></span>lombok<span class="token operator">&lt;</span><span class="token operator">/</span>artifactId<span class="token operator">&gt;</span>
      <span class="token generics function"><span class="token punctuation">&lt;</span>version<span class="token punctuation">&gt;</span></span><span class="token number">1.18</span><span class="token number">.12</span><span class="token operator">&lt;</span><span class="token operator">/</span>version<span class="token operator">&gt;</span>
 <span class="token operator">&lt;</span><span class="token operator">/</span>dependency<span class="token operator">&gt;</span>
<div class="hljs-button {2}" data-title="复制" data-report-click="{&quot;spm&quot;:&quot;1001.2101.3001.4259&quot;}"></div></code><ul class="pre-numbering" style=""><li style="color: rgb(153, 153, 153);">1</li><li style="color: rgb(153, 153, 153);">2</li><li style="color: rgb(153, 153, 153);">3</li><li style="color: rgb(153, 153, 153);">4</li><li style="color: rgb(153, 153, 153);">5</li></ul></pre> 
<ul><li>再准备一个Controller,模拟一下前后交互:</li></ul> 
<pre class="prettyprint"><code class="prism language-java has-numbering" οnclick="mdcp.copyCode(event)" style="position: unset;"><span class="token annotation punctuation">@RestController</span>
<span class="token annotation punctuation">@RequestMapping</span><span class="token punctuation">(</span><span class="token string">"/date"</span><span class="token punctuation">)</span>
<span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">DateController</span> <span class="token punctuation">{<!-- --></span>

    <span class="token annotation punctuation">@RequestMapping</span><span class="token punctuation">(</span><span class="token string">"/test"</span><span class="token punctuation">)</span>
    <span class="token keyword">public</span> DateEntity <span class="token function">getDate</span><span class="token punctuation">(</span>DateEntity dateEntity<span class="token punctuation">)</span><span class="token punctuation">{<!-- --></span>
        System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"入参的date:"</span><span class="token operator">+</span>dateEntity<span class="token punctuation">.</span><span class="token function">getDate</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>

        SimpleDateFormat sdf <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">SimpleDateFormat</span><span class="token punctuation">(</span><span class="token string">"yyyy-MM-dd HH:mm:ss"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        String date <span class="token operator">=</span> sdf<span class="token punctuation">.</span><span class="token function">format</span><span class="token punctuation">(</span>dateEntity<span class="token punctuation">.</span><span class="token function">getDate</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"SimpleDateFormat格式化后的date:"</span><span class="token operator">+</span>date<span class="token punctuation">)</span><span class="token punctuation">;</span>

        DateEntity result <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">DateEntity</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        result<span class="token punctuation">.</span><span class="token function">setDate</span><span class="token punctuation">(</span><span class="token keyword">new</span> <span class="token class-name">Date</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        <span class="token keyword">return</span> result<span class="token punctuation">;</span>
     <span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<div class="hljs-button {2}" data-title="复制" data-report-click="{&quot;spm&quot;:&quot;1001.2101.3001.4259&quot;}"></div></code><ul class="pre-numbering" style=""><li style="color: rgb(153, 153, 153);">1</li><li style="color: rgb(153, 153, 153);">2</li><li style="color: rgb(153, 153, 153);">3</li><li style="color: rgb(153, 153, 153);">4</li><li style="color: rgb(153, 153, 153);">5</li><li style="color: rgb(153, 153, 153);">6</li><li style="color: rgb(153, 153, 153);">7</li><li style="color: rgb(153, 153, 153);">8</li><li style="color: rgb(153, 153, 153);">9</li><li style="color: rgb(153, 153, 153);">10</li><li style="color: rgb(153, 153, 153);">11</li><li style="color: rgb(153, 153, 153);">12</li><li style="color: rgb(153, 153, 153);">13</li><li style="color: rgb(153, 153, 153);">14</li><li style="color: rgb(153, 153, 153);">15</li><li style="color: rgb(153, 153, 153);">16</li><li style="color: rgb(153, 153, 153);">17</li></ul></pre> 
<ul><li>创建好POJO和Controller后,用Postman模拟一下请求发送:<br> <img src="https://img-blog.csdnimg.cn/20200604104255777.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3podXppY2M=,size_16,color_FFFFFF,t_70" alt="在这里插入图片描述"></li><li>结果报错:<br> <img src="https://img-blog.csdnimg.cn/20200604103830856.png" alt="在这里插入图片描述"></li><li>大概意思就是说String类型转换成Date类型失败,所以报了IllegalArgumentException异常;</li></ul> 
<h2><a name="t2"></a><a name="t2"></a><a id="JsonFormat_48"></a>二、@JsonFormat注解</h2> 
<ul><li>提供者:jackson</li><li>作用:可以约束时间的<strong>接收格式</strong>和<strong>响应格式</strong> (接收和响应的都是<strong>JSON字符串</strong>),将日期类型数据在JSON格式和java.util.Date对象之间转换。与传输方向没有关系(前端到后端or后端到前端都可以使用),<strong>注意</strong>因为我们是东八区(北京时间),使用时需要加上时区( timezone = “GMT+8”),<strong>不然所得值会比实际时间晚8小时</strong>;</li><li>常用注解属性:</li></ul> 
<div class="table-box"><table><thead><tr><th>名称</th><th>作用</th></tr></thead><tbody><tr><td>pattern</td><td>约定时间格式:pattern=“yyyy-MM-dd HH:mm:ss”</td></tr><tr><td>timezone</td><td>指定具体时区: timezone = “GMT+8” or timezone = “Asia/Shanghai”</td></tr></tbody></table></div>
<ul><li>经过测试使用<strong>单独使用</strong>@JsonFormat注解时需要先通过@RequestBody将入参参数映射到实体后,@JsonFormat注解才能去对时间格式进行约束;</li><li>改造controller,加上了@RequestBody注解:</li></ul> 
<pre class="prettyprint"><code class="prism language-java has-numbering" οnclick="mdcp.copyCode(event)" style="position: unset;">    <span class="token annotation punctuation">@RequestMapping</span><span class="token punctuation">(</span><span class="token string">"/test"</span><span class="token punctuation">)</span>
    <span class="token keyword">public</span> DateEntity <span class="token function">getDate</span><span class="token punctuation">(</span><span class="token annotation punctuation">@RequestBody</span> DateEntity dateEntity<span class="token punctuation">)</span><span class="token punctuation">{<!-- --></span>
        System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"入参的date:"</span><span class="token operator">+</span>dateEntity<span class="token punctuation">.</span><span class="token function">getDate</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>

        SimpleDateFormat sdf <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">SimpleDateFormat</span><span class="token punctuation">(</span><span class="token string">"yyyy-MM-dd HH:mm:ss"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        String date <span class="token operator">=</span> sdf<span class="token punctuation">.</span><span class="token function">format</span><span class="token punctuation">(</span>dateEntity<span class="token punctuation">.</span><span class="token function">getDate</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"SimpleDateFormat格式化后的date:"</span><span class="token operator">+</span>date<span class="token punctuation">)</span><span class="token punctuation">;</span>

        DateEntity result <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">DateEntity</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        result<span class="token punctuation">.</span><span class="token function">setDate</span><span class="token punctuation">(</span><span class="token keyword">new</span> <span class="token class-name">Date</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        <span class="token keyword">return</span> result<span class="token punctuation">;</span>
    <span class="token punctuation">}</span>
<div class="hljs-button {2}" data-title="复制" data-report-click="{&quot;spm&quot;:&quot;1001.2101.3001.4259&quot;}"></div></code><ul class="pre-numbering" style=""><li style="color: rgb(153, 153, 153);">1</li><li style="color: rgb(153, 153, 153);">2</li><li style="color: rgb(153, 153, 153);">3</li><li style="color: rgb(153, 153, 153);">4</li><li style="color: rgb(153, 153, 153);">5</li><li style="color: rgb(153, 153, 153);">6</li><li style="color: rgb(153, 153, 153);">7</li><li style="color: rgb(153, 153, 153);">8</li><li style="color: rgb(153, 153, 153);">9</li><li style="color: rgb(153, 153, 153);">10</li><li style="color: rgb(153, 153, 153);">11</li><li style="color: rgb(153, 153, 153);">12</li></ul></pre> 
<ul><li>POJO类中也加上了@JsonFormat注解:</li></ul> 
<pre class="prettyprint"><code class="prism language-java has-numbering" οnclick="mdcp.copyCode(event)" style="position: unset;"><span class="token annotation punctuation">@Data</span>
<span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">DateEntity</span> <span class="token punctuation">{<!-- --></span>

    <span class="token annotation punctuation">@JsonFormat</span><span class="token punctuation">(</span>pattern <span class="token operator">=</span> <span class="token string">"yyyy-MM-dd hh"</span><span class="token punctuation">,</span> timezone <span class="token operator">=</span> <span class="token string">"GMT+8"</span><span class="token punctuation">)</span>
    <span class="token keyword">private</span> Date date<span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<div class="hljs-button {2}" data-title="复制" data-report-click="{&quot;spm&quot;:&quot;1001.2101.3001.4259&quot;}"></div></code><ul class="pre-numbering" style=""><li style="color: rgb(153, 153, 153);">1</li><li style="color: rgb(153, 153, 153);">2</li><li style="color: rgb(153, 153, 153);">3</li><li style="color: rgb(153, 153, 153);">4</li><li style="color: rgb(153, 153, 153);">5</li><li style="color: rgb(153, 153, 153);">6</li></ul></pre> 
<ul><li>测试:<br> <img src="https://img-blog.csdnimg.cn/20200604110554335.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3podXppY2M=,size_16,color_FFFFFF,t_70" alt="在这里插入图片描述"></li><li>结果可以看出,@JsonFormat对时间格式进行了约束 ,mm:ss并没有按传入的值显示:<br> <img src="https://img-blog.csdnimg.cn/20200604110017695.png" alt="在这里插入图片描述"></li><li>再看return的返回值中也可以看出输出格式是完全按照@JsonFormat约定的时间格式(“yyyy-MM-dd hh”)进行了输出;<img src="https://img-blog.csdnimg.cn/20200604111212159.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3podXppY2M=,size_16,color_FFFFFF,t_70" alt="在这里插入图片描述"></li><li>实际返回结果:<br> <img src="https://img-blog.csdnimg.cn/20200604111244718.png" alt="在这里插入图片描述"></li></ul> 
<h2><a name="t3"></a><a name="t3"></a><a id="DateTimeFormat_91"></a>三、@DateTimeFormat注解</h2> 
<ul><li>提供者:Spring</li><li>作用:可对java.util.Date、java.uitl.calendar、java.long.Long及Joda时间类型的属性进行标注,主要处理前端时间类型与后端pojo对象中的成员变量进行数据绑定,所约束的时间格式并不会影响后端返回前端的时间类型数据格式;</li><li><strong>注意</strong>(注意!注意!注意!讲三遍):前端入参数据的时间格式必须与注解中定义的时间格式相同,不然会报错,如:@DateTimeFormat(pattern = “yyyy-MM-dd HH:mm”) 则入参的格式必须为"2020-6-4 10:43";</li><li>常用注解属性:</li></ul> 
<div class="table-box"><table><thead><tr><th>名称</th><th>作用</th></tr></thead><tbody><tr><td>iso</td><td>类型为DateTimeFormat.ISO,常用值:<br>DateTimeFormat.ISO.DATE:格式为yyyy-MM-dd <br>DateTimeFormat.ISO.DATE_TIME:格式为yyyy-MM-dd hh:mm:ss.SSSZ<br>DateTimeFormat.ISO.TIME:格式为hh:mm:ss.SSSZ<br>DateTimeFormat.ISO.NONE:表示不使用ISO格式的时间(默认值)</td></tr><tr><td>pattern</td><td>类型为String,使用自定义时间格式化字符串,如"yyyy-MM-dd hh:mm:ss"</td></tr><tr><td>style</td><td>类型为String,通过样式指定日期时间的格式,由两位字符组成,<br>第一位表示日期的样式,第二位表示时间的格式,以下是几个常用的可选值:<br>S:短日期/时间的样式<br>M:中日期/时间的样式<br>L:短日期/时间的样式<br>F:完整日期/时间的样子<br>-:忽略日期或时间的样式<br>默认值 style=“SS”</td></tr></tbody></table></div>
<ul><li>controller代码:</li></ul> 
<pre class="prettyprint"><code class="prism language-java has-numbering" οnclick="mdcp.copyCode(event)" style="position: unset;"> <span class="token annotation punctuation">@RequestMapping</span><span class="token punctuation">(</span><span class="token string">"/test"</span><span class="token punctuation">)</span>
    <span class="token keyword">public</span> DateEntity <span class="token function">getDate</span><span class="token punctuation">(</span>DateEntity dateEntity<span class="token punctuation">)</span><span class="token punctuation">{<!-- --></span>
        System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"入参的date:"</span><span class="token operator">+</span>dateEntity<span class="token punctuation">.</span><span class="token function">getDate</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>

        SimpleDateFormat sdf <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">SimpleDateFormat</span><span class="token punctuation">(</span><span class="token string">"yyyy-MM-dd HH:mm:ss"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        String date <span class="token operator">=</span> sdf<span class="token punctuation">.</span><span class="token function">format</span><span class="token punctuation">(</span>dateEntity<span class="token punctuation">.</span><span class="token function">getDate</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span><span class="token string">"SimpleDateFormat格式化后的date:"</span><span class="token operator">+</span>date<span class="token punctuation">)</span><span class="token punctuation">;</span>

        DateEntity result <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">DateEntity</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        Date date1 <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">Date</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        result<span class="token punctuation">.</span><span class="token function">setDate</span><span class="token punctuation">(</span>date1<span class="token punctuation">)</span><span class="token punctuation">;</span>
        <span class="token keyword">return</span> result<span class="token punctuation">;</span>
    <span class="token punctuation">}</span>
<div class="hljs-button {2}" data-title="复制" data-report-click="{&quot;spm&quot;:&quot;1001.2101.3001.4259&quot;}"></div></code><ul class="pre-numbering" style=""><li style="color: rgb(153, 153, 153);">1</li><li style="color: rgb(153, 153, 153);">2</li><li style="color: rgb(153, 153, 153);">3</li><li style="color: rgb(153, 153, 153);">4</li><li style="color: rgb(153, 153, 153);">5</li><li style="color: rgb(153, 153, 153);">6</li><li style="color: rgb(153, 153, 153);">7</li><li style="color: rgb(153, 153, 153);">8</li><li style="color: rgb(153, 153, 153);">9</li><li style="color: rgb(153, 153, 153);">10</li><li style="color: rgb(153, 153, 153);">11</li><li style="color: rgb(153, 153, 153);">12</li><li style="color: rgb(153, 153, 153);">13</li></ul></pre> 
<ul><li>POJO代码:</li></ul> 
<pre class="prettyprint"><code class="prism language-java has-numbering" οnclick="mdcp.copyCode(event)" style="position: unset;"><span class="token annotation punctuation">@Data</span>
<span class="token keyword">public</span> <span class="token keyword">class</span> <span class="token class-name">DateEntity</span> <span class="token punctuation">{<!-- --></span>

    <span class="token annotation punctuation">@DateTimeFormat</span><span class="token punctuation">(</span>pattern <span class="token operator">=</span> <span class="token string">"yyyy-MM-dd hh"</span><span class="token punctuation">)</span>
    <span class="token keyword">private</span> Date date<span class="token punctuation">;</span>
<span class="token punctuation">}</span>
<div class="hljs-button {2}" data-title="复制" data-report-click="{&quot;spm&quot;:&quot;1001.2101.3001.4259&quot;}"></div></code><ul class="pre-numbering" style=""><li style="color: rgb(153, 153, 153);">1</li><li style="color: rgb(153, 153, 153);">2</li><li style="color: rgb(153, 153, 153);">3</li><li style="color: rgb(153, 153, 153);">4</li><li style="color: rgb(153, 153, 153);">5</li><li style="color: rgb(153, 153, 153);">6</li></ul></pre> 
<ul><li>测试:<br> <img src="https://img-blog.csdnimg.cn/20200604143721902.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3podXppY2M=,size_16,color_FFFFFF,t_70" alt="-"></li><li>结果:<br> <img src="https://img-blog.csdnimg.cn/20200604143649378.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3podXppY2M=,size_16,color_FFFFFF,t_70" alt="在这里插入图片描述"></li></ul> 
<h2><a name="t4"></a><a name="t4"></a><a id="JsonFormat__DateTimeFormat__133"></a>四、@JsonFormat 和 @DateTimeFormat 区别</h2> 
<ul><li>@JsonFormat<strong>既</strong>可以约束<strong>前端传入的时间类型参数格式</strong>,<strong>也</strong>可以约束<strong>后端响应前端的时间类型格式</strong>;</li><li>@DateTimeFormat<strong>只能</strong>约束<strong>前端传入的时间类型参数格式</strong>,且如果单独使用@DateTimeFormat时,响应给前端的时间会比实际时间晚8个小时(时区原因)。</li></ul>
                </div><div data-report-view="{&quot;mod&quot;:&quot;1585297308_001&quot;,&quot;dest&quot;:&quot;https://blog.youkuaiyun.com/zhuzicc/article/details/106529485&quot;,&quot;extend1&quot;:&quot;pc&quot;,&quot;ab&quot;:&quot;new&quot;}"><div></div></div>
                <link href="https://csdnimg.cn/release/blogv2/dist/mdeditor/css/editerView/markdown_views-10218d227c.css" rel="stylesheet">
                <link href="https://csdnimg.cn/release/blogv2/dist/mdeditor/css/style-6aa8c38f9a.css" rel="stylesheet">
        </div>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值