SORU
23 EKİM 2008, PERŞEMBE


Nasıl takvim Dilimleri Java kullanarak işlemek için?

Benim uygulama geldiği zaman Damgası değeri var. Kullanıcı herhangi bir yerel saat Dilimi olabilir.

Bu tarih, her zaman GMT verilen varsayan bir Java Eklentisi için kullanıldığından (GMT) söylemek (EST) kullanıcı parametre dönüştürmek için bir ihtiyaç var. Asıl önemlisi: kullanıcı TZ bihaber. WS göndermek istediği oluşturulma tarihi giriyor, ben buna ne gerek var:

Kullanıcı girer:5/1/2008 6:12 PM (EST)
WS için parametresi olmalıdır: 5/1/2008 6:12 PM (GMT)

Biliyorum Zaman her zaman olması gerekiyordu GMT varsayılan olarak, ama gönderirken, parametre, olsa bile ben yarattım takvimimden TS (ki olması gerekiyordu GMT), saati hep kapalı sürece kullanıcı GMT. Neyi kaçırıyorum?

Timestamp issuedDate = (Timestamp) getACPValue(inputs_, "issuedDate");
Calendar issueDate = convertTimestampToJavaCalendar(issuedDate);
...
private static java.util.Calendar convertTimestampToJavaCalendar(Timestamp ts_) {
  java.util.Calendar cal = java.util.Calendar.getInstance(
      GMT_TIMEZONE, EN_US_LOCALE);
  cal.setTimeInMillis(ts_.getTime());
  return cal;
}

Bir önceki Kod ile bu sonuç (kolay okuma için Kısa Biçimi) olarak alıyorum

[Mayıs 1, 2008 11:12 PM]

CEVAP
23 EKİM 2008, PERŞEMBE


public static Calendar convertToGmt(Calendar cal) {

	Date date = cal.getTime();
	TimeZone tz = cal.getTimeZone();

	log.debug("input calendar has date ["   date   "]");

	//Returns the number of milliseconds since January 1, 1970, 00:00:00 GMT 
	long msFromEpochGmt = date.getTime();

	//gives you the current offset in ms from GMT at the current date
	int offsetFromUTC = tz.getOffset(msFromEpochGmt);
	log.debug("offset is "   offsetFromUTC);

	//create a new calendar in GMT timezone, set to this date and add the offset
	Calendar gmtCal = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
	gmtCal.setTime(date);
	gmtCal.add(Calendar.MILLISECOND, offsetFromUTC);

	log.debug("Created GMT cal with date ["   gmtCal.getTime()   "]");

	return gmtCal;
}

Burada ise geçerli zaman geçersem çıktı ("12:09:05" Calendar.getInstance()) SUNACAK:

Hata AYIKLAMA - giriş takvimi tarih vardır [23 12:09:05 / g grubu / 2008 Per Eki]< / ^ br . Hata AYIKLAMA - mahsup -14400000< / ^ br . Hata AYIKLAMA - tarih ile Oluşturulan GMT cal [Prş Eki 23 08:09:05 / g grubu / 2008]

GMT 8:09:05 / g grubu / 12:09:05.

Kafa karıştırıcı kısmının burada olduğunu Calendar.getTime() getiri Date içinde bulunduğunuz zaman dilimi de yoktur yöntemini değiştirmek için saat takvim ve alttaki tarih yuvarlandı da. Web hizmeti alır ne bağlı olarak, sadece döneminde, milisaniye cinsinden WS anlaşma olabilir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Murray Winiata

    Murray Winia

    2 ŞUBAT 2009
  • Rickymon Tero

    Rickymon Ter

    1 Ocak 2007
  • Tomas N

    Tomas N

    14 Kasım 2010