2016-03-26 25 views
1

ミリ秒ではなく「yyyy-MM-dd」の形式で日付を表示するには、どうすればdate_labelを取得できますか? 私はStringとして日付を保存していましたが、それはうまくいきましたが、私はこのサイトの多くの "エキスパート"にしたがって日付を保存する方法であるため、長く変更しました。私は変換を行うSQLiteの関数を見つけることができませんし、DBFormapter.KEY_DATEをStringFormatでDateFormatでフォーマットせずに成功させようとしました。Androidの「yyyy-MM-dd」のような日付SQLite

まず
private void fillData() { 

    cursor = db.getAllWorkdays(); 

    String[] from = new String[] { DBAdapter.KEY_WEEKDAY, DBAdapter.KEY_DATE , DBAdapter.KEY_WORKSTART , 
      DBAdapter.KEY_WORKEND , DBAdapter.KEY_VAKT }; 
    int[] to = new int[] { R.id.textView_weekday, R.id.date_label, R.id.start_label, R.id.end_label, R.id.textView4 }; 

    // create an array adapter and set it to display using our row 

    SimpleCursorAdapter rows = new SimpleCursorAdapter(this, 
      R.layout.list_row, cursor, from, to, 0); 
    setListAdapter(rows); 
} 

This picture shows a running example

+0

'それはこのsite.'上の多くの「専門家」に応じて日付を格納するための方法ですので、私は長い間に変更が本気なの?私は自分自身がTimeStringsを使用することに非常にcomfotable見つける。 ** you **が好きな場合は、整数形式を自由に使用できますが、TimeStringsを使用する場合はカウンタ表示はありません。私はもっ​​と*人間が読める*を見つける。 –

答えて

-1
  • :限り、常に日付を保存します。

  • 第二:あなたのデータベースからの長いクエリおよび実行します。Date date = new Date(longValue);

  • なく、少なくとも最後に:

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault()); sdf.format(date);

0

あなたは長いとして日付を保存したいです - それは良い。ただし、この場合SimpleCursorAdapterは単純すぎます。 ListViewのカスタムCursorAdapterを実行し、getView()を膨らませて、ルートの膨張したビューの中に異なるTextViewビューを作成する方が良いでしょう。

それは日付が含まれているのTextViewを移入するための時間が来る、このようformatDateTime()を使用します。文字列は、ユーザーの選択したロケールに適しただろう

long time = ... // whatever your time is from the cursor 
String date_as_string = DateUtils.formatDateTime(context, time, FORMAT_SHOW_DATE | FORMAT_NUMERIC_DATE); 

(彼らはYYYY-DD-MMとして日付を好むかもしれませんそれで、彼らに選択させてください)。

+0

さて、カスタムCursorAdapterが機能しました。ありがとうございます。日付(DateColumn/1000、 'unixepoch')も@CLとして機能しました。提案する。 SQLiteのページを少しスクロールしてください。しかし、私は本当にStringがとても簡単なときに、なぜ私がDateストレージとして長く使うべきなのかを理解できません。行数が50を超えないので、データが多くありません。 –

+0

@ Classtmanそれは、より多くのスペースを取るでしょう、あなたは精度を失うでしょう、そして、あなたはその文字列を表示するだけではないその日付で何かをするたびにそれを解析する必要があります。あなたの電話。 –

0

これはSQLiteで直接サポートされています。

date(timestring, modifier, ...)をご利用ください。

UNIXの日付として保存されている日付の場合は、unixepoch修飾子を使用する必要があります。直接

+0

残念ながら、date()関数は、タイムストリングまたはユリウスの日付番号を引数として取ります。私の日付は1970年1月1日からUNIXの日付としてミリ秒単位で保存されます。 [リンク](https://www.sqlite.org/lang_datefunc.html)と[リンク](https://en.wikipedia.org/wiki/Julian_day#Calculation)を参照してください。 –

0

(秒)のSQLiteのbuilt-in date functionsサポートUnixのタイムスタンプは:

SELECT date(DateColumn/1000, 'unixepoch') FROM ... 
関連する問題