-4

我有一个像

"DAY 316 OF YEAR 1998". 

如何通过上述输入获得确切的日期和月份?有任何想法吗?

在Java中,我怎样才能做到这一点?请帮忙。

4

6 回答 6

3

There are any number of ways you might achieve this, based on what you have available.

For example. Based on the String in your example, you could use a SimpleDateFormat to simple parse the String back to a Date object, which is probably the easiest solution I can think of...

try {
  String value = "DAY 316 OF YEAR 1998";
  SimpleDateFormat sdf = new SimpleDateFormat("'DAY' DDD 'OF YEAR' yyyy");
  Date date = sdf.parse(value);

  System.out.println(date);
} catch (ParseException exp) {
  exp.printStackTrace();
}

Once you have a Date object, you can use Calendar to extract various parts of the Date object or simple use another DateFormat to format the value...

Calendar cal = Calendar.getInstance();
cal.setTime(date);

System.out.println("Day of Month = " + cal.get(Calendar.DATE));
// Note, MONTH is 0 indexed...
System.out.println("Month = " + (cal.get(Calendar.MONTH) + 1));

System.out.println("Formatted = " + DateFormat.getDateInstance().format(date));

So you should end up with, something like...

Day of Month = 12
Month = 11
Formatted = 12/11/1998
于 2013-08-09T09:27:25.353 回答
2
  1. 解析你的字符串以获得两个数字:一年中的一天和一年
  2. 创建具有指定年份和一年中的第一天作为一年中的一天的日历
  3. 设置指定的一年中的一天
  4. 从此更新的日历中读取日期和月份参数
于 2013-08-09T07:51:47.740 回答
2

您应该首先判断年份是1998、 或2098,还是别的什么。

除此之外,您可以使用 Calendar API 实现您想要的。您感兴趣的常数是:

创建一个日历实例,使用Calendar.getInstance(TimeZone). 使用上述常量和方法设置YEAR(1998 或 2098,等等)和(316)。DAY_OF_YEARCalendar#set(field, value)

于 2013-08-09T07:52:42.403 回答
0

我不确定是否有更好的方法,但您可以尝试使用以下代码行:

Calendar mycal = new GregorianCalendar(1998, Calendar.JANUARY, 1);
int daysInMonth = mycal.getActualMaximum(Calendar.DAY_OF_MONTH);

这将返回您输入的月份的天数。从一月到十二月(增加/改变你的mycal)并从你的天数中减去所有的东西,直到你有一个负数。那将是你的一个月。

于 2013-08-09T07:47:47.280 回答
0

使用以下方法尝试这样的事情Calender:-

Date d;
Calendar c= Calendar.getInstance();
c.setTime(date);
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
于 2013-08-09T07:48:23.743 回答
0

使用 RegExps 从该字符串中提取您需要的数据,并使用 Date/Calendar 类指向该时刻。我想这是一个家庭作业,所以我不会给你任何代码片段,你必须自己解决。

于 2013-08-09T07:49:49.443 回答