অ্যান্ড্রয়েড, স্ট্রিংকে আমি কীভাবে রূপান্তর করতে পারি?


142

আমি বর্তমান সময় ব্যবহারকারীর দ্বারা অ্যাপ্লিকেশন শুরু হয় ডাটাবেসে বর্তমান সময় সঞ্চয়।

Calendar c = Calendar.getInstance();
    String str = c.getTime().toString();
    Log.i("Current time", str);

ডাটাবেস সাইডে, আমি বর্তমান সময়টিকে স্ট্রিং হিসাবে সংরক্ষণ করি (আপনি উপরের কোডটিতে দেখতে পাচ্ছেন)। অতএব, আমি যখন এটি ডাটাবেস থেকে লোড করি তখন আমার এটিকে তারিখ অবজেক্টে কাস্ট করা দরকার। আমি কিছু নমুনা দেখেছি যেগুলি সকলেই "তারিখফর্ম্যাট" ব্যবহার করেছিল। তবে আমার ফর্ম্যাটটি হ'ল তারিখের বিন্যাসের মতো। সুতরাং, আমি মনে করি "তারিখফর্ম্যাট" ব্যবহার করার দরকার নেই। আমি কি সঠিক?

এই স্ট্রিং টু ডেট অবজেক্টকে সরাসরি কাস্ট করার কোনও উপায় আছে কি? আমি এই সঞ্চিত সময়টিকে বর্তমান সময়ের সাথে তুলনা করতে চাই।

ধন্যবাদ

======> আপডেট

ধন্যবাদ প্রিয় ছেলেরা। আমি নিম্নলিখিত কোড ব্যবহার করেছি:

private boolean isPackageExpired(String date){
        boolean isExpired=false;
        Date expiredDate = stringToDate(date, "EEE MMM d HH:mm:ss zz yyyy");        
        if (new Date().after(expiredDate)) isExpired=true;

        return isExpired;
    }

    private Date stringToDate(String aDate,String aFormat) {

      if(aDate==null) return null;
      ParsePosition pos = new ParsePosition(0);
      SimpleDateFormat simpledateformat = new SimpleDateFormat(aFormat);
      Date stringDate = simpledateformat.parse(aDate, pos);
      return stringDate;            

   }

উত্তর:


419

স্ট্রিং থেকে তারিখ

String dtStart = "2010-10-15T09:27:37Z";  
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");  
try {  
    Date date = format.parse(dtStart);  
    System.out.println(date);  
} catch (ParseException e) {
    e.printStackTrace();  
}

তারিখ থেকে স্ট্রিং

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");  
try {  
    Date date = new Date();  
    String dateTime = dateFormat.format(date);
    System.out.println("Current Date Time : " + dateTime); 
} catch (ParseException e) {
    e.printStackTrace();  
}

ঠিক - ডেটাবেসে স্টোর করার আগে তারিখের স্ট্রিংয়ে কিছু মানক ফর্ম প্রয়োগ করা ভাল। এই ক্ষেত্রে en.wikipedia.org/wiki/ISO_8601
denis.solonenko

"স্ট্রিং টু ডেট"-তে আরও কঠোরভাবে কাজ করার সমাধানের জন্য এটি "format.setLenient (মিথ্যা)" যুক্ত করা সুবিধাজনক; চেষ্টা করার আগে ... ব্লক ধরুন। এইভাবে পূর্বে সঠিক স্ট্রিংয়ের তারিখের চেকটি আরও ভাল হবে।
অ্যালেক্স

আমি বিশ্বাস করি না যে এটি SimpleDateFormat.format()একটি ব্যতিক্রম ছুঁড়েছে
কেউ কেউ কোথাও

2
যদি আপনার এসডিকে সংস্করণটি মার্শমেলোর চেয়ে বেশি বা সমান হয় তবে SimpleDateFormat dateFormat =new SimpleDateFormat(""yyyy-MM-dd'T'HH:mm:ss'Z'"", Locale.getDefault());
এটির

8
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
Date d = dateFormat.parse(datestring)

2
এটি স্ট্রিংকে ভেরিয়েবল হিসাবে পার্স করার কথা নয়? কারণ এইভাবে, এটি "স্ট্রিং" শব্দটি বিশ্লেষণ করার চেষ্টা করছে।
মার্কো

6

সিম্পলডেট ফরমেট বা ডেটফর্ম্যাট ক্লাসের মাধ্যমে ব্যবহার করা

যেমন

try{
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); // here set the pattern as you date in string was containing like date/month/year
Date d = sdf.parse("20/12/2011");
}catch(ParseException ex){
    // handle parsing exception if date string was different from the pattern applying into the SimpleDateFormat contructor
}

4
     import java.text.ParseException;
     import java.text.SimpleDateFormat;
     import java.util.Date;
     public class MyClass 
     {
     public static void main(String args[]) 
     {
     SimpleDateFormat formatter = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy");

     String dateInString = "Wed Mar 14 15:30:00 EET 2018";

     SimpleDateFormat formatterOut = new SimpleDateFormat("dd MMM yyyy");


     try {

        Date date = formatter.parse(dateInString);
        System.out.println(date);
        System.out.println(formatterOut.format(date));

         } catch (ParseException e) {
        e.printStackTrace();
         }
    }
    }

এখানে আপনার তারিখ অবজেক্টের তারিখ এবং আউটপুটটি হ'ল:

বুধ মার্চ 14 ​​13:30:00 ইউটিসি 2018 |

14 মার্চ 2018


তোমাকে অনেক ধন্যবাদ!
মেরিওমি 1

1

c.getTime().toString();নির্ভর করে লোকালের সাথে সতর্ক হওয়া ভাল ধারণা হতে পারে ।

একটি ধারণা হ'ল সময়টি সেকেন্ডে সঞ্চয় করা (যেমন ইউনিক্স সময় )। একটি হিসাবে intআপনি সহজেই এটি তুলনা করতে পারেন, এবং তারপরে আপনি এটি ব্যবহারকারীর কাছে প্রদর্শিত হলে স্ট্রিংয়ে রূপান্তর করেন।


1
String source = "24/10/17";

String[] sourceSplit= source.split("/");

int anno= Integer.parseInt(sourceSplit[2]);
int mese= Integer.parseInt(sourceSplit[1]);
int giorno= Integer.parseInt(sourceSplit[0]);

    GregorianCalendar calendar = new GregorianCalendar();
  calendar.set(anno,mese-1,giorno);
  Date   data1= calendar.getTime();
  SimpleDateFormat myFormat = new SimpleDateFormat("20yy-MM-dd");

    String   dayFormatted= myFormat.format(data1);

    System.out.println("data formattata,-->"+dayFormatted);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.