Java中生成符合http响应头中的Date格式的字符串

在http header中,Date头域表示消息发送的时间,时间的描述格式由rfc822(电子邮件的标准格式)定义。例如,Date: Sat, 05 Jul 2014 12:53:36 GMT。具体格式说明如下:

标准格式:DAY, DD MMM YYYY HH:MM:SS GMT,其中

DAY: 由三个英文字母指代的星期(Sun, Mon, Tue, Wed, Thu, Fri, Sat).

DD: 日(such as 01 for the first day of the month).

MMM:由 三个英文字母指代的月份(Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec).

YYYY: 年份

HH: 小时

MM: 分钟

SS: 秒

GMT: 格林威治时间

那么在Java中要生成一个符合http响应头中的Date格式的字符串,需要解决的问题只有两个:

  1、将本地时间转化为格林尼治时间;

  2、将转化好的时间格式化输出为符合rfc822标准的时间字符串。

这里提供一个可供参考的实现方式如下:

package com.test;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Locale;
import java.util.TimeZone;

public class DateTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Calendar cal = Calendar.getInstance();

        // Locale.US用于将日期区域格式设为美国(英国也可以)。缺省改参数的话默认为机器设置,如中文系统星期将显示为汉子“星期六”
        SimpleDateFormat localDate = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss", Locale.US);
        SimpleDateFormat greenwichDate = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss ‘GMT‘", Locale.US);
        // 时区设为格林尼治
        greenwichDate.setTimeZone(TimeZone.getTimeZone("GMT"));

        System.out.println("当前时间:" + localDate.format(cal.getTime()));
        System.out.println("格林尼治时间:" + greenwichDate.format(cal.getTime()));        

    }

}

运行结果:

当前时间:Sat, 5 Jul 2014 13:52:17
格林尼治时间:Sat, 5 Jul 2014 05:52:17 GMT

Java中生成符合http响应头中的Date格式的字符串

时间: 2024-12-15 18:01:37

Java中生成符合http响应头中的Date格式的字符串的相关文章

你知道 http 响应头中的 ETag 是如何生成的吗

关于 etag 的生成需要满足几个条件 当文件不会更改时,etag 值保持不变.所以不能单纯使用 inode 便于计算,不会特别耗 CPU.这样子 hash 不是特别合适 便于横向扩展,多个 node 上生成的 etag 值一致.这样子 inode 就排除了 关于服务器中 etag 如何生成可以参考 HTTP: Generating ETag Header 那么在 nginx 中的 etag 是如何生成的? nginx 中 ETag 的生成 我在网上找到一些资料与源代码了解到了 etag 的计算

提高安全性而在HTTP响应头中可以使用的各种响应头字段

本文介绍在Web服务器做出响应时,为了提高安全性而在HTTP响应头中可以使用的各种响应头字段.由于部分浏览器中有可能对某些字段或选项不提供支持,所以在使用这些字段时请先确认客户端环境. X-Frame-Options 该响应头中用于控制是否在浏览器中显示frame或iframe中指定的页面,主要用来防止Clickjacking(点击劫持)攻击. X-Frame-Options: SAMEORIGIN DENY 禁止显示frame内的页面(即使是同一网站内的页面) SAMEORIGIN 允许在fr

Android中自定义ListView无法响应OnItemClickListener中的onItemClick方法问题解决方案

如果你的自定义ListViewItem中有Button或者Checkable的子类控件的话,那么默认focus是交给了子控件,而ListView 的Item能被选中的基础是它能获取Focus,也就是说我们可以通过将ListView中Item中包含的所有控件的focusable属性设置为 false,这样的话ListView的Item自动获得了Focus的权限,也就可以被选中了 我们可以通过对Item Layout的根控件设置其android:descendantFocusability="blo

Js中Date格式化为字符串

惭愧,混迹博客园2年了,还没写过什么.最近不太忙,就写一下Js中Date对象的字符串转换吧. 直接贴代码,欢迎各位拍砖,吐槽! /*格式化时间 *formatStr 格式,如:YY-MM-DD hh:mm:ss.Y-M-D h:m:s *只有一个M时,月份小于十时前面不追加零,D.h.m.s雷同 */Date.prototype.toStringFormat = function (formatStr) { if (formatStr == null || formatStr == '') re

【协议分析】HTTP响应头中的2种编码方式介绍

HTTP 1.1中有两个实体头(Entity-Header)直接与编码相关,分别为Content-Encoding和Transfer-Encoding.    先说Content-Encoding, 该头表示实体已经采用了的编码方式.Content-Encoding是请求URL对应实体(Entity)本身的一部分.比如请求URL为 http://host/image.png.gz时,可能会得到的Content-Encoding为gzip.Content-Encoding的值是不区分大小写的,目前

http响应头中的X-Frame-Options防止被frame

X-Frame-Options 响应头有3个值: DENY:表示该页面不允许在 frame 中展示,即便是在相同域名的页面中嵌套也不允许. SAMEORIGIN:表示该页面可以在相同域名页面的 frame 中展示. ALLOW-FROM uri:表示该页面可以在指定来源的 frame 中展示. Nginx配置:把下列这行添加到Nginx.conf的"http"或"server"或"location"中 add_header X-Frame-Opt

java,时间转时间戳的转换以及各种date格式的转化

package com.henry.test; import java.text.SimpleDateFormat;import java.util.Date;import java.util.HashMap;import java.util.Map; import org.apache.commons.lang.StringUtils; import com.shopin.core.util.HttpClientUtil; public class test { /** * 说明: * @pa

【HTTP协议】响应头中的Content-Length和Transfer-Encoding

来源: http://blog.csdn.net/superhosts/article/details/8737434 http://bbs.csdn.net/topics/390384017 对于http的请求返回结果要进行内容的长度校验主要有两种方式: 1.客户端在http头(head)加Connection:keep-alive时,服务器的response是Transfer-Encoding:chunked的形式,通知页面数据是否接收完毕,例如长连接或者程序运行中可以动态的输出内容,例如一

【ASP.NET Core】如何隐藏响应头中的 “Kestrel”

全宇宙人民都知道,ASP.NET Core 应用是不依赖服务器组件的,因此它可以独立运行,一般是使用支持跨平台的 Kestrel 服务器(当然,在 Windows 上还可以考虑用 HttpSys,但要以管理员身份运行). 尽管 SDK 文档中推荐我们用服务器组件来“反向”代理,但独立运行也是允许的.当 Web 应用独立运行的时候,客户端发出请求后,在响应的 HTTP 消息中,会附上一个 Server 头,其值就是 Kestrel.如下面的高清无码无水印截图所示. 看到了吧,Server = Ke