【问题标题】:Convert string to date Android将字符串转换为日期 Android
【发布时间】:2014-01-20 21:43:45
【问题描述】:

我正在尝试转换一个表示存储在 SQLITE 中的日期的字符串。

日期存储到sqlite中如下:

Date date;

date.toString();

根据 Java 文档,toString() 方法:

返回此日期的字符串表示形式。格式是 相当于使用带有格式字符串“EEE MMM”的 SimpleDateFormat dd HH:mm:ss zzz yyyy”,看起来像“Tue Jun 22 13:07:00 PDT 1999"。使用当前的默认时区和语言环境。如果您 需要控制时区或语言环境,使用 SimpleDateFormat 反而。

到这里为止,一切正常,但是当我尝试获取字符串并将其再次转换为日期时,Java 会抛出异常。

字符串来自 sqlite:

Mon Jan 20 18:26:25 BRT 2014

所以,我愿意:

SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.US);

Date date= sdf.parse("Mon Jan 20 18:26:25 BRT 2014");

我做错了什么?

谢谢。

【问题讨论】:

  • 您还没有告诉我们您的期望和实际得到的。
  • 还有什么例外?
  • 对不起!我需要以这种格式获取日期:“dd/MM/yyyy”。
  • @vitorvigano 顺便说一句,这是在您的数据库中存储日期时间数据的绝对错误的方法。切勿在 java.util.Date 上使用“toString”,除非出于快速和肮脏的目的;当您应该使用 UTC/GMT 时,它使用默认时区,并且它使用 3 个字母的时区代码,这些代码既不是标准化的也不是唯一的。阅读 SQLite doc on data types。使用 SQLite date-time functionsISO 8601 format 中存储和检索,调整为 UTC/GMT(无时区偏移)。

标签: java android sqlite simpledateformat


【解决方案1】:

试试这个代码

String dateString = "here your date";
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
Date convertedDate = new Date();
try {
    convertedDate = dateFormat.parse(dateString);
} catch (ParseException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
System.out.println(convertedDate);

【讨论】:

  • 这个答案好像倒过来了:输入输出格式,输出输入格式。
  • 当然。 “2014 年 1 月 20 日星期一 18:26:25 BRT”
  • 我尝试使用相同的格式,但没有“BRT”,它适用于我,如果您可以从您的格式中删除 BRT?
  • 仅供参考,非常麻烦的旧日期时间类,如 java.util.Datejava.util.Calendarjava.text.SimpleDateFormat 现在是 legacy,被 Java 8 中内置的 java.time 类所取代,之后。见Tutorial by Oracle
【解决方案2】:

试试这个:

String w = "Mon Jan 20 18:26:25 BRT 2014";
SimpleDateFormat pre = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy");
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
try{
    Date date = pre.parse(w);
    System.out.println(sdf.format(date));
}catch(Exception e){
    e.printStackTrace();
}

输出:

20/01/2014

【讨论】:

  • 我需要得到一个字符串“Mon Jan 20 18:26:25 BRT 2014”并转换为“dd/MM/yyyy”。你的答案不对。
  • 您严格按照字符串或日期接收它?
  • 我收到一个字符串。
【解决方案3】:

dd/MM/yyyy格式存储和恢复数据值的格式化程序

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/MM/yyyy");

存储数据

String dataAsString = simpleDateFormat.format(date); // 20/01/2014

恢复数据

Date data = simpleDateFormat.parse(dataAsString);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-27
    • 2011-11-28
    • 2012-01-28
    • 2018-12-23
    • 2012-01-24
    • 1970-01-01
    • 2016-05-03
    相关资源
    最近更新 更多