簡體   English   中英

將PHP語句覆蓋到Java中

[英]Coverting PHP statement into Java

我必須將以下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?

這與上面的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日期,希望您發現它有用:-)

嘗試這個:

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

您必須使用Calender.get(Calendar.YEAR)等來實現此目的。 用Java不能像用PHP那樣表達日期格式,但是,可以得到相同的字段值。

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

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

在上面的代碼段中, new Date()返回當前時間,該時間根據傳遞的模式使用SimpleDateFormat格式化。 然后,您只需串聯cacheExpire變量。

該示例正是您想要的:

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() ) );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM