如何从日期格式“yyyy-MM-dd'T'HH:mm:ss.SSSZ”中分别获取日期、年份、小时、分钟?

Posted

技术标签:

【中文标题】如何从日期格式“yyyy-MM-dd\'T\'HH:mm:ss.SSSZ”中分别获取日期、年份、小时、分钟?【英文标题】: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代码? 您的问题不清楚...您希望它们由用户单独输入,还是要将它们从数据库中分离出来? 我正在存储用户登录时的当前日期,但在通过时我想拆分它.. 我发现将数据库中的所有内容存储为“以毫秒为单位的时间”更容易。 【参考方案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。

以上是关于如何从日期格式“yyyy-MM-dd'T'HH:mm:ss.SSSZ”中分别获取日期、年份、小时、分钟?的主要内容,如果未能解决你的问题,请参考以下文章

如何从解析的 d3.js 日期创建新的日期格式

如何从日期选择器设置语言环境格式?

如何从现有格式转换php中的日期格式[重复]

swift - 如何将日期从上午/下午转换为 24 小时格式

如何从我的EditText获取具有格式化日期的日期对象(通过微调器存储)

如何格式化通过 AJAX 从 ASPX JSON 解析的日期?