簡體   English   中英

如何在GWT中使用java.util.Calendar

[英]How to use java.util.Calendar in GWT

我必須在GWT入口點使用java.util.Calendar,但是在運行應用程序時遇到錯誤,那是因為GWT無法找到源代碼,無論如何我可以解決這個問題。

提前致謝!!!

java.util.Calendar不是模擬類。 您可以在此處找到模擬類的列表:

http://code.google.com/webtoolkit/doc/latest/RefJreEmulation.html

我強烈建議不要在客戶端使用任何日期/日歷庫。 你可能只會遇到麻煩。 實際上,即使在GWT中模擬java.sql.Date和java.util.Date,我也不會使用它們。 如果您希望使用日歷,那么您可能希望在客戶端上支持時區。 使用模擬的Date類,您將以某種方式將客戶端的Date從瀏覽器的時區轉換為某個目標時區(GMT或用戶首選項中用戶定義的任何內容?)。 這肯定會容易出錯。 使用GWT的TimeZone會增加其他問題。 例如,如何在Java TimeZones和GWT TimeZones之間進行映射?

我建議在服務器上進行所有日期操作和格式化。 在客戶端,您只需使用日期/月/年三元組。 服務器可以在用戶(或組織)與java.util.TimeZone(或joda timezone)之間建立關聯。 使用三元組和時區,您可以輕松地及時創建特定實例。

您可以使用com.google.gwt.user.datepicker.client.CalendarUtil

沒有辦法在GWT中使用java.util.Calendar ,因為JavaScript中沒有等效的東西。 但是有一個可接受的功能請求 也許您會在請求的評論中找到一些提示。

下面顯示了如何使用Joda Time從Java Date類型中使用Joda Times format()函數提取任何日期信息,並使用它來使用Joda Time的parse()函數構建new Date()

static DateTimeFormat dtf = DateTimeFormat.getFormat("yyyy-MM-dd HH:mm:ss.SSS");
static DateTimeFormat datefmt = DateTimeFormat.getFormat("yyyy-MM-dd ");
static DateTimeFormat timefmt = DateTimeFormat.getFormat("HH:mm:ss.SSS");

public Date getDateTime(Date date, Date time) {
    String datetime = datefmt.format(date) + timefmt.format(time);
    return dtf.parse(datetime);
}

對於那些喜歡直接實現數學的人來說,這里是一個解決方案,用於在不使用Calendar或任何已棄用的函數的情況下將天添加到現有日期對象:

private Date addDays(Date dateIn, int numDays)
{
   long milisPerDay = 86400000;

   // convert the dateIn to milliseconds
   long dateInMilis = dateIn.getTime();

   // add numDays to the date
   dateInMilis = dateInMilis + (numDays * milisPerDay);

   return new Date(dateInMilis);
}


以下是如何將當前年份作為字符串獲取(對於版權聲明非常有用)

long time = System.currentTimeMillis();
long milisPerYear = new BigInteger("31536000000").longValue();
String currentYear = String.valueOf((int) Math.floor(time / milisPerYear) + 1970);

Google可以輕松找到一天,一年等數量的常數,例如毫秒數。 棘手的部分是增加幾個月,因為一個月內的毫秒數將取決於月份。 如果有任何需求,我很樂意寫一個函數並在此處發布,以便添加和減去月份。

您是否嘗試將類的實際代碼添加到項目中? 一些Java SDK類編譯得很好,即使它們不在JRE白名單中。

暫無
暫無

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

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