天天记事 426 / 2021-12-20 12:10:02
1. 格式化输出GMT格式日期字符串,用户HTTP协议下的Date字符串表示,代码如下:
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Locale;
import java.util.TimeZone;
static final String HTTP_DATE_FORMAT = "EEE, dd MMM yyyy HH:mm:ss zzz";
static final String HTTP_DATE_GMT_TIMEZONE = "GMT";
static final int HTTP_CACHE_SECONDS = 604800;//7 days
static final String IF_MODIFIED_SINCE = "if-modified-since";
//设置日期格式化模式(样式),并使用US地理位置
SimpleDateFormat dateFormatter = new SimpleDateFormat(HTTP_DATE_FORMAT, Locale.US);
//设置日期时区为GMT
dateFormatter.setTimeZone(TimeZone.getTimeZone(HTTP_DATE_GMT_TIMEZONE));
//获得Gregorian(格里高利)日历对象
Calendar time = new GregorianCalendar();
//格式化时间戳为:Wed, 15 Dec 2021 04:50:29 GMT
String gmtdatestr = dateFormatter.format(time.getTime());
//解析日期字符串为Date类型
String ifModifiedSince = request.getHeader(IF_MODIFIED_SINCE);
//解析HTTP请求头中内容
if (ifModifiedSince != null && !ifModifiedSince.isEmpty()) {
Date ifModifiedSinceDate = dateFormatter.parse(ifModifiedSince);
if (ifModifiedSinceDate.getTime() == file.lastModified()) {
//TODO 仅输出消息头即可, eg: 304 - Not Modified, 此消息代码可以无其它消息头,原则上不跟消息体,也就是让客户端使用本地缓存即可
} else {
//TODO 输出文件内容 ...
}
} else {
//TODO 输出文件内容 ...
}