1

次の PHP スクリプトを JSP スクリプトレットに変換する必要がありました。

<?php
 $cache_expire = 60*60*24*365;
 header("Pragma: public");
 header("Cache-Control: max-age=".$cache_expire);
 header('Expires: ' . gmdate('D, d M Y H:i:s', time()+$cache_expire) . ' GMT');
?>

私はすることができました:

<%! long cacheExpire = 60*60*24*365; %>

<% 
 response.setHeader("Pragma", "public");
 response.setHeader("Cache-Control", "max-age=" + cacheExpire);
 response.setHeader("Expires", "....?..."); // what do I put in the second string ?
%>

しかし、PHP スクリプトの最後のステートメントを JSP に変換できません。私はJavaでこれを理解しました:

new GregorianCalendar().getTime() + cacheExpire

しかし、これを実装するのは正しくありません。

PHP の最後のステートメントを Java ステートメントに変換するにはどうすればよいですか?

4

5 に答える 5

1

これは、上記の PHP コードとまったく同じです。

<%! long cacheExpire = 60*60*24*365; %>

<% 
 response.setHeader("Pragma", "public");
 response.setHeader("Cache-Control", "max-age=" + cacheExpire);

 DateFormat df = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss");
 df.setTimeZone(TimeZone.getTimeZone("GMT"));
 long expire = (long) System.currentTimeMillis() + (cacheExpire * 1000);
 String expires = df.format(new Date(expire)) + " GMT";

 response.setHeader("Expires", expires);
%>

トリッキーな部分は、Java と php の異なる日付形式トークン間で変換し、GMT タイムゾーンで Java 日付を取得することでした。お役に立てば幸いです :-)

于 2012-09-15T11:53:09.343 に答える
0

SimpleDateFormatクラスを使用Dateして Java でオブジェクトをフォーマットする必要があります。たとえば、次のコードを確認して、 のstringDatePatternような有効な日付形式に置き換えます"yyyy-MM-dd"

new SimpleDateFormat(stringDatePattern).format(new Date()) + cacheExpire

上記のスニペットでは、渡されたパターンに従ってnew Date()フォーマットされた現在の時刻を返します。次に、変数SimpleDateFormatを連結するだけです。cacheExpire

于 2012-09-15T11:05:38.080 に答える
0

その例はまさにあなたが望むことをします:

int cacheExpire = 60 * 60 * 24 * 365;

Calendar cal = Calendar.getInstance();
cal.add( Calendar.SECOND, cacheExpire );
SimpleDateFormat format = new SimpleDateFormat( "EEE, dd MMM yyyy HH:mm:ss 'GMT'" );
format.setTimeZone( TimeZone.getTimeZone( "GMT" ) );

response.setHeader( "Expires", format.format( cal.getTime() ) );
于 2012-09-15T11:41:32.500 に答える
0

これを試して:

response.setDateHeader("Expires", System.currentTimeMillis() + cacheExpire);
于 2012-09-15T11:00:05.610 に答える
0

Calender.get(Calendar.YEAR)これを達成するには etc を使用する必要があります。PHP でできるように Java で日付形式を表現する方法はありませんが、フィールド値はまったく同じように取得できます。

于 2012-09-15T11:00:24.347 に答える