如何从字符串中提取日,月和年值[如18/08/2012].我尝试使用SimpleDateFormat,但它返回一个Date对象,我发现所有的Get方法都已弃用.有没有更好的方法来做到这一点?
谢谢
Jon*_*eet 22
就个人而言,我会使用Joda Time,这会让生活变得更加简单.特别是,这意味着您不必担心与时区相关的Calendar
时区SimpleDateFormat
- 您只需解析为a LocalDate
,这就是数据真正向您显示的内容.这也意味着您不必担心几个月基于0 :)
Joda Time使许多日期/时间操作更加愉快.
import java.util.*;
import org.joda.time.*;
import org.joda.time.format.*;
public class Test {
public static void main(String[] args) throws Exception {
DateTimeFormatter formatter = DateTimeFormat.forPattern("dd/MM/yyyy")
.withLocale(Locale.UK);
LocalDate date = formatter.parseLocalDate("18/08/2012");
System.out.println(date.getYear()); // 2012
System.out.println(date.getMonthOfYear()); // 8
System.out.println(date.getDayOfMonth()); // 18
}
}
Run Code Online (Sandbox Code Playgroud)
小智 15
只需去String.split()
,
String str[] = "18/08/2012".split("/");
int day = Integer.parseInt(str[0]);
int month = Integer.parseInt(str[1]);
..... and so on
Run Code Online (Sandbox Code Playgroud)
这可以让你无需添加外部罐子
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Date parse = sdf.parse("18/08/2012");
Calendar c = Calendar.getInstance();
c.setTime(parse);
System.out.println(c.get(Calendar.MONTH) + c.get(Calendar.DATE) + c.get(Calendar.YEAR));
Run Code Online (Sandbox Code Playgroud)
java.time.LocalDate.parse(\n "18/08/2012" , \n DateTimeFormatter.ofPattern( "dd/MM/uuuu" ) \n).getDayOfMonth\xe2\x80\x8b() // .getYear\xe2\x80\x8b() .getMonth()\n
Run Code Online (Sandbox Code Playgroud)\n\n现代方法使用java.time类。避免麻烦的遗留类,例如Date
& Calendar
。
LocalDate
String input = "18/08/2012" ;\n
Run Code Online (Sandbox Code Playgroud)\n\n该类LocalDate
表示仅日期值,没有时间和时区。
DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd/MM/uuuu" ) ;\nLocalDate ld = LocalDate.parse( input , f ) ;\n
Run Code Online (Sandbox Code Playgroud)\n\n\n\n\nld.toString(): 2012-08-18
\n
询问零件。
\n\nint d = ld.getDayOfMonth\xe2\x80\x8b() ;\nint m = ld.getMonthValue() ;\nint y = ld.getYear() ;\n
Run Code Online (Sandbox Code Playgroud)\n\njava.time框架内置于 Java 8 及更高版本中。这些类取代了麻烦的旧遗留日期时间类,例如java.util.Date
, Calendar
, & SimpleDateFormat
。
Joda -Time项目现在处于维护模式,建议迁移到java.time类。
\n\n要了解更多信息,请参阅Oracle 教程。并在 Stack Overflow 上搜索许多示例和解释。规格为JSR 310。
\n\n从哪里获取 java.time 类?
\n\nThreeTen -Extra项目通过附加类扩展了 java.time。该项目是 java.time 未来可能添加的内容的试验场。您可能会在这里找到一些有用的类,例如Interval
、、、等等。YearWeek
YearQuarter
在该日期之外创建一个java.util.Calendar对象,如下所示,并提取日期部分:
Calendar cal = Calendar.getInstance();
cal.setTime(<date from simple-date-format).
cal.get(Calendar.MONTH);
Run Code Online (Sandbox Code Playgroud)
等等.,
归档时间: |
|
查看次数: |
41579 次 |
最近记录: |