2012-09-15 19 views
1

我有下面的PHP腳本轉換成JSP scriplet:Coverting PHP語句轉換成Java

<?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語言?

回答

0

試試這個:

response.setDateHeader("Expires", System.currentTimeMillis() + cacheExpire); 
0

你必須使用Calender.get(Calendar.YEAR)等方式來實現這一點。在Java中沒有辦法用Java來表達日期格式,但是,您可以獲得相同的字段值。

0

您應該使用SimpleDateFormat類來格式化Java中的Date對象。例如,請檢查以下代碼,用"yyyy-MM-dd"之類的有效日期格式替換stringDatePattern

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

在上面的代碼中,new Date()返回當前時間,這是使用作爲SimpleDateFormat每通過了圖案格式化。然後你只需連接cacheExpire變量。

+0

以及如何將cacheExpire添加到它? – saplingPro

+0

您可以使用「+」運算符來追加它。編輯表示相同的代碼。 – Arjun

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())); 
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的不同日期格式標記之間的轉換並獲得格林威治標準時區的java日期,希望你會發現它很有用:-)