【问题标题】:How to get the day, year, hours, min Individually from date format "yyyy-MM-dd'T'HH:mm:ss.SSSZ"?如何从日期格式“yyyy-MM-dd'T'HH:mm:ss.SSSZ”中分别获取日期、年份、小时、分钟?
【发布时间】:2012-05-20 02:02:58
【问题描述】:

我正在做一个以"yyyy-MM-dd'T'HH:mm:ss.SSSZ" 这种格式存储当前时间和日期的程序。我将它作为字符串存储在数据库中。当我收集数据时,我需要单独的值,如日、年、分钟、秒等。我该怎么做?

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
String now = formatter.format(new Date());

谢谢,

【问题讨论】:

  • 什么问题,你用对了类
  • 你如何收集数据,通过数据库或java代码?
  • 您的问题不清楚...您希望它们由用户单独输入,还是要将它们从数据库中分离出来?
  • 我正在存储用户登录时的当前日期,但在通过时我想拆分它..
  • 我发现将数据库中的所有内容存储为“以毫秒为单位的时间”更容易。

标签: android datetime


【解决方案1】:

我建议您将数据库中的时间存储为“timeInMillis”。以我的经验,它简化了代码,并允许您将时间值相互比较。

存储时间:

Calendar calendar = Calendar.getInstance(); // current time
long timeInMillis = calendar.getTimeInMillis();
mDb.saveTime (timeInMillis); // adjust this to work with your DB

检索时间:

long timeInMillis = mDb.getTime();
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis (timeInMillis);
int milliSeconds = calendar.get(MILLISECOND);
//etc

【讨论】:

    【解决方案2】:

    尝试使用:int hour = Calendar.getInstance().get(Calendar.HOUR_OF_DAY);

    这里,

    • Calendar.HOUR_OF_DAY 为您提供 24 小时制时间。
    • Calendar.HOUR 为您提供 12 小时时间。

    【讨论】:

      【解决方案3】:

      只需使用解析而不是格式:

      String dateFromDB = "";
      SimpleDateFormat parser = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
      Date yourDate = parser.parse(dateFromDB);
      

      然后您可以使用 java.util.Date & Calendar API 读取您想要的任何字段:

        Calendar calendar = Calendar.getInstance();
          calendar.setTime(yourDate);
          calendar.get(Calendar.DAY_OF_MONTH); //Day of the month :)
          calendar.get(Calendar.SECOND); //number of seconds
      //and so on
      

      希望能满足你的需求

      【讨论】:

      • 它显示错误'java.text.ParseException: Unparseable date: 2012-05-11T18:25:55:250GMT'
      • 尝试在格式化之后解析它。 => 解析格式的输出以查看问题是否来自数据库。
      • 无论如何,尝试解析格式化函数的输出。另外,请确保您的日期格式符合规则。
      • 我没有得到这个,“解析格式化函数的输出”
      • 抱歉我的英语不好。我的意思是尝试 Date yourDate = parser.parse(parser.format(new Date());
      【解决方案4】:

      有这些方法可用于获取日期的各个部分

      getDate()
      getMinutes()
      getHours()
      getSeconds()
      getMonth()
      getTime()
      getTimezoneOffset()
      getYear()
      

      【讨论】:

      • 这些方法在 API 级别 1 中已被弃用。从 JDK 版本 1.1 开始,将替换为以下示例:Calendar.get(Calendar.YEAR) - 1900。
      猜你喜欢
      • 1970-01-01
      • 2017-12-20
      • 1970-01-01
      • 1970-01-01
      • 2019-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多