以java格式将字符串转换为日期,格式为2012-07-27
我的输入字符串为2012-07-27,我希望输出为日期,但格式与2012-07-27相同 我的代码是 DateFormat df=新的简化格式(“yyyy-MM-dd hh:MM:ss”) 我的输出是以java格式将字符串转换为日期,格式为2012-07-27,java,Java,我的输入字符串为2012-07-27,我希望输出为日期,但格式与2012-07-27相同 我的代码是 DateFormat df=新的简化格式(“yyyy-MM-dd hh:MM:ss”) 我的输出是 Fri Jul 27 00:00:00 IST 2012 但是我想返回日期对象,比如2012-07-26 23:59:59,而不是字符串。有什么帮助吗 任何帮助都非常感谢您必须使用另一个具有所需输出格式(format())的SimpleDataFormat您必须使用另一个具有所需输出格式(for
Fri Jul 27 00:00:00 IST 2012
但是我想返回日期对象,比如2012-07-26 23:59:59,而不是字符串。有什么帮助吗
任何帮助都非常感谢您必须使用另一个具有所需输出格式(
format()
)的SimpleDataFormat您必须使用另一个具有所需输出格式(format()
)的SimpleDataFormat您可以使用与解析日期相同的SimpleDataFormat
,将日期格式化为字符串
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = formatter.parse("2012-07-27");
System.out.println(date1); // prints Fri Jul 27 00:00:00 IST 2012
System.out.println(formatter.format(date1)); // prints 2012-07-26
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date = dateFormat.parse("2012-07-27");
System.out.println(dateFormat.format(date));
您可以使用与解析日期相同的simpleDataFormat
,将日期格式化为字符串
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = formatter.parse("2012-07-27");
System.out.println(date1); // prints Fri Jul 27 00:00:00 IST 2012
System.out.println(formatter.format(date1)); // prints 2012-07-26
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date = dateFormat.parse("2012-07-27");
System.out.println(dateFormat.format(date));
首先,我认为需要注意的是,System.out.println
隐式调用其参数的toString
方法。参数必须是对象
或其子类。而Date
是Object
的一个子类。话虽如此,请看一看1.7Date#toString
的实现
public String toString() {
// "EEE MMM dd HH:mm:ss zzz yyyy";
BaseCalendar.Date date = normalize();
StringBuilder sb = new StringBuilder(28);
int index = date.getDayOfWeek();
if (index == gcal.SUNDAY) {
index = 8;
}
convertToAbbr(sb, wtb[index]).append(' '); // EEE
convertToAbbr(sb, wtb[date.getMonth() - 1 + 2 + 7]).append(' '); // MMM
CalendarUtils.sprintf0d(sb, date.getDayOfMonth(), 2).append(' '); // dd
CalendarUtils.sprintf0d(sb, date.getHours(), 2).append(':'); // HH
CalendarUtils.sprintf0d(sb, date.getMinutes(), 2).append(':'); // mm
CalendarUtils.sprintf0d(sb, date.getSeconds(), 2).append(' '); // ss
TimeZone zi = date.getZone();
if (zi != null) {
sb.append(zi.getDisplayName(date.isDaylightTime(), zi.SHORT, Locale.US)); // zzz
} else {
sb.append("GMT");
}
sb.append(' ').append(date.getYear()); // yyyy
return sb.toString();
}
Date
对象的字符串表示形式指定为EEE MMM dd HH:mm:ss zzz yyyy
。这正是你所看到的
如果要以不同格式显示日期对象,请使用SimpleDataFormat类。它的唯一目的是为Date
对象表示为字符串的方式增加灵活性
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = formatter.parse("2012-07-27");
System.out.println(date1); // prints Fri Jul 27 00:00:00 IST 2012
System.out.println(formatter.format(date1)); // prints 2012-07-26
还有
一个可能的,尽管荒谬的解决方法是创建自己的包装器类
public class MyDate{
private final Date d;
private final SimpleDateFormat sdf;
public(Date d, SimpleDateFormat sdf){
this.d = d;
this.sdf = sdf;
}
// not recommended...should only be used for debugging purposes
@Override
public String toString(){
return sdf.format(d);
}
}
首先,我认为需要注意的是,System.out.println
隐式调用其参数的toString
方法。参数必须是对象
或其子类。而Date
是Object
的一个子类。话虽如此,请看一看1.7Date#toString
的实现
public String toString() {
// "EEE MMM dd HH:mm:ss zzz yyyy";
BaseCalendar.Date date = normalize();
StringBuilder sb = new StringBuilder(28);
int index = date.getDayOfWeek();
if (index == gcal.SUNDAY) {
index = 8;
}
convertToAbbr(sb, wtb[index]).append(' '); // EEE
convertToAbbr(sb, wtb[date.getMonth() - 1 + 2 + 7]).append(' '); // MMM
CalendarUtils.sprintf0d(sb, date.getDayOfMonth(), 2).append(' '); // dd
CalendarUtils.sprintf0d(sb, date.getHours(), 2).append(':'); // HH
CalendarUtils.sprintf0d(sb, date.getMinutes(), 2).append(':'); // mm
CalendarUtils.sprintf0d(sb, date.getSeconds(), 2).append(' '); // ss
TimeZone zi = date.getZone();
if (zi != null) {
sb.append(zi.getDisplayName(date.isDaylightTime(), zi.SHORT, Locale.US)); // zzz
} else {
sb.append("GMT");
}
sb.append(' ').append(date.getYear()); // yyyy
return sb.toString();
}
Date
对象的字符串表示形式指定为EEE MMM dd HH:mm:ss zzz yyyy
。这正是你所看到的
如果要以不同格式显示日期对象,请使用SimpleDataFormat类。它的唯一目的是为Date
对象表示为字符串的方式增加灵活性
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = formatter.parse("2012-07-27");
System.out.println(date1); // prints Fri Jul 27 00:00:00 IST 2012
System.out.println(formatter.format(date1)); // prints 2012-07-26
还有
一个可能的,尽管荒谬的解决方法是创建自己的包装器类
public class MyDate{
private final Date d;
private final SimpleDateFormat sdf;
public(Date d, SimpleDateFormat sdf){
this.d = d;
this.sdf = sdf;
}
// not recommended...should only be used for debugging purposes
@Override
public String toString(){
return sdf.format(d);
}
}
您可以使用相同的SimpleDataFormat
获取日期的字符串
表示形式。该方法执行以下操作:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = sdf.parse("2012-07-27");
System.out.println(sdf.format(date1);
您可以使用相同的SimpleDataFormat
获取日期的字符串
表示形式。该方法执行以下操作:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = sdf.parse("2012-07-27");
System.out.println(sdf.format(date1);
中没有“格式”属性。Date
实例是一个相当简单的对象,表示一个时刻(实际上,它的状态仅由它内部存储的unix时间戳定义)
如其他人所述,使用(例如)a将日期
实例打印为字符串。中没有“格式”属性。Date
实例是一个相当简单的对象,表示一个时刻(实际上,它的状态仅由它内部存储的unix时间戳定义)
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = formatter.parse("2012-07-27");
System.out.println(date1); // prints Fri Jul 27 00:00:00 IST 2012
System.out.println(formatter.format(date1)); // prints 2012-07-26
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date = dateFormat.parse("2012-07-27");
System.out.println(dateFormat.format(date));
如其他人所述,使用(例如)a将日期
实例打印为字符串。tl;博士
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = formatter.parse("2012-07-27");
System.out.println(date1); // prints Fri Jul 27 00:00:00 IST 2012
System.out.println(formatter.format(date1)); // prints 2012-07-26
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date = dateFormat.parse("2012-07-27");
System.out.println(dateFormat.format(date));
2012-07-27
细节
现代的方法是使用java.time类
该类表示一个仅限日期的值,不包含一天中的时间和时区
标准格式
您的输入字符串格式恰好符合标准。在解析/生成表示日期时间值的字符串时,java.time类默认使用ISO 8601格式。所以根本不需要指定格式化模式
LocalDate ld = LocalDate.parse( "2012-07-27" );
不要将日期时间对象与表示其值的字符串合并。日期时间类/对象可以解析字符串并生成字符串,但字符串
始终是一个独立的对象
String output = ld.toString();
2012-07-27
自定义格式
如果您的输入是非标准的,请定义要匹配的DateTimeFormatter
String input = "20-12-2005" ;
DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd-MM-uuuu" ) ;
LocalDate ld = LocalDate.parse( input , f ) ;
ld.toString():2012-07-27
关于java.time
该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,例如,&
该项目现已启动,建议迁移到类
要了解更多信息,请参阅。并搜索堆栈溢出以获得许多示例和解释。规格是
从哪里获得java.time类
- 后来
- 内置的李>
- 标准JavaAPI的一部分,带有捆绑实现
- Java9添加了一些次要功能和修复
- 及
- 大部分java.time功能都在中向后移植到Java6和Java7
-
- 该项目专门为Android采用了ThreeTen Backport(如上所述)
- 看
该项目使用其他类扩展了java.time。这个项目是java.time将来可能添加的一个试验场。您可以在这里找到一些有用的类,如、、和。tl;博士
2012-07-27
细节
现代的方法是使用java.time类
该类表示一个仅限日期的值,不包含一天中的时间和时区
标准格式
您的输入字符串格式恰好符合标准。在解析/生成表示日期时间值的字符串时,java.time类默认使用ISO 8601格式。所以根本不需要指定格式化模式
LocalDate ld = LocalDate.parse( "2012-07-27" );
不要将日期时间对象与表示其值的字符串合并。日期时间类/对象可以解析字符串并生成字符串,但字符串
始终是一个独立的对象
String output = ld.toString();
2012-07-27
自定义格式