PG備忘録

プログラミングいろいろ

Calendar↔Stringを相互に変換

SQLiteDatabaseでは日付に関するオブジェクトはそのまま格納できない
→ TEXT = String型で格納する
→ どうやって変換するの?
というのが、下記のコード

ポイント

  • SimpleDateFormatを使って変換する
  • ミリ秒までformatしないと、情報が失われるので注意
  • Calendar.MONTHは0-11だけど、そこらへんは考えなくてok
package com.example.orisa.mycal1;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    //部品の変数
    TextView tv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //部品の取得
        tv = (TextView)findViewById(R.id.tv);

        Calendar cal1 = Calendar.getInstance();

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss:SSS");
        String str1 = sdf.format(cal1.getTime());

        Calendar cal2 = Calendar.getInstance();

        try{
            cal2.setTime(sdf.parse(str1));
            
            if(cal1.equals(cal2)){
                tv.setText("true");
            } else {
                tv.setText("false");
            }

        }catch (ParseException e){
            tv.setText("exception");
        }
    }
}