Soru & Cevap

Sqlite Date Türünde Kaydedilen Veriyi Çekmek

01.04.2016 - 06:45

Merhaba,

Date türünde bir değişkeni Sqlite veri tabanımda hashmap'e kaydediyorum.

Kayıt yapılacağı zaman o anki saati alıyor ve kaydediyor. Buraya kadar sorun yok.

Bir başka sayfada kaydettiğim bu veriyi kullanacağımda 

map.get("tarih");

şeklinde çekiyorum ve bir başka Date değişkenine eşitlemek istediğimde hashmap'ten çektiğim bu verinin artık String bir ifade olduğunu dolayısıyla eşitleyemeyeceğimi söylüyor. Tam olarak burada tıkandım. Özetle Date olarak kaydettiğim veri tekrar çekmek istediğimde String'e dönüştüğü için kullanamıyorum.

Yardımcı olabilirseniz sevinirim.

139 Görüntülenme

3 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

picture-28812-1452251417.jpg
umutonur
03.04.2016 - 11:12

Merhaba Emre..
Sorunu tam olarak anlayamadım ama anladığım kadarıyla yardımcı olmaya çalışmak isterim..

Date nesnenin Long değerini String olarak veritabanına kaydedip,
daha sonra o String değerine göre işlem yapman daha iyi olmaz mı ?

yani;

Long date = new Date().getTime();
String dateLongString = Long.toString(date);

yaparak dateLongString i veritabanına kaydedersin.

Kullanırken de; 

Long dateLong = Long.decode(dateLongString);

şeklinde Long değerine çevirirsin. 

Burada dateLong değişkeniyle istediğin ekleme çıkarma işlemlerini yaptıktan sonra;

Date date = new Date(dateLong);

yaparak Date nesneni oluşturup;

SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss aa");
String formattedString = dateFormat.format(date);

yaparak ta istediğin şekilde formata sokabilirsin. 

 

Umut ONUR
05.04.2016 - 11:34
Onun içinde bir çözüm mevcut.. cal.setTime(date); metodu kullanarak Date() nesnesini Calendar()'a , cal.setTimeInMillis(dateLong); metodu kullanarak ta Long değerini Calendar()'a çevirebilir, daha sonra işlemlerini bunun üzerinden yapabilirsin.. ;)
Emre Taşbaş
05.04.2016 - 12:13
Merhaba meslektaşım; bahsettiğin gibi denedim fakat Calendar sınıfı ile birbirine bağlayamadım. Çünkü bitiş tarihinin hesaplamasını oradan yapıyorum. Calendar cal = new GregorianCalendar(); baslangic = cal.getTime(); cal.add(Calendar.MINUTE, 3); cal.add(Calendar.SECOND, 25); bitis = cal.getTime(); şeklinde bir yöntem izliyorum. Long tipinde çağırdığım değişkeni bu defa burada işleme sokamıyorum. İşler baya karıştı, kafam allak bullak oldu :)
picture-62423-1460561213.jpg
emre.tsbs
02.04.2016 - 02:11

Merhaba, verdiğin bilgi için teşekkür ederim. Hatadan kurtuldu fakat şuan bir dönüşüm daha gerekiyor sanki :)

SimpleDateFormat dateBaslangicFormat = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss aa"); // bu formatı belirlemek size kalmış
        Date convertedDate1 = new Date();
        try {
            convertedDate1 = dateBaslangicFormat.parse("baslangic_tarihi"); // dateString db'den çektiğiniz string değeri
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

SimpleDateFormat dateBitisFormat = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss aa"); // bu formatı belirlemek size kalmış
        Date convertedDate2 = new Date();
        try {
            convertedDate2 = dateBitisFormat.parse("bitis_tarihi"); // dateString db'den çektiğiniz string değeri
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

Date simdikiZaman;
Calendar cal = new GregorianCalendar();
simdikiZaman = cal.getTime();
convertedDate1.after(convertedDate2);
long fark = (convertedDate2.getTime()-simdikiZaman.getTime())/(1000);
tv3.setText(Long.toString(fark));
tv7.setText(String.valueOf(simdikiZaman).toString());

Yapmak istediğim durumu özetleyeyim,

Bir başka sayfada Başlangıç Tarihini alıp veritabanına kaydediyorum. Ardından üzerine biraz daha dakika ve saniye ekleyip onuda Bitiş Tarihi olarak veritabanına kaydediyorum. Sonra kodları gösterdiğim sayfada hepsini çağırıyorum. Calendar sınıfından Şimdiki Süreyi çağırıp Bitiş Tarihinden çıkarıyorum ve fark olarak bunu hesaplatıyorum. Amacım bir nesnenin zamana bağlı olarak ömrünün azalması ve bitmesini hedefliyorum. Fakat farkı 0 olarak hesaplıyor ve alttaki hatayı veriyor.

W/System.err: java.text.ParseException: Unparseable date: "baslangic_tarihi" (at offset 0)
W/System.err: java.text.ParseException: Unparseable date: "bitis_tarihi" (at offset 0)

SimpleDateFormat ile Date uyuşmazlığından kaynaklanıyor olabilir, sonuca çok yaklaştığımı hissediyorum :) Yardımcı olabilirsen sevinirim.

Alper Gökhan Beyler
03.04.2016 - 12:22
Merhabalar, nesnenin zamana bağlı olarak ömrünün azalması ve bitmesini hedefliyorum derken ne demek istiyorsun ne yapmak istediğini tam olarak anlamadım..
picture-19298-1459404577.jpg
alper_beyler
01.04.2016 - 07:01

Merhabalar, madem elinizde string değeri var ozaman tarih formatını belirleyip parse edebilirsiniz böylece date değerini elde etmiş olursunuz diye düşünüyorum

 SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss aa"); // bu formatı belirlemek size kalmış
 Date convertedDate = new Date();
  try {
        convertedDate = dateFormat.parse(dateString); // dateString db'den çektiğiniz string değeri
   } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
   }