如何从日期格式“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”中分别获取日期、年份、小时、分钟?的主要内容,如果未能解决你的问题,请参考以下文章
swift - 如何将日期从上午/下午转换为 24 小时格式