我需要使用以下格式获取当前时间的日期" yyyy-MM-dd' T' HH:mm:ss"
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
我知道如何使用SimpleDateFormat格式化Date。最后我得到一个字符串。但我需要获取格式化的日期,而不是字符串,据我所知,我无法将字符串转换回日期,可以吗?
如果我只返回日期,则为日期,但格式不正确:
Timestamp ts = new Timestamp(new Date().getTime());
编辑: 不幸的是,我需要将结果作为日期,而不是字符串,因此我不能使用sdf.format(New Date()。getTime()),因为这会返回一个String。 此外,我需要返回的日期是当前时间的日期,而不是静态字符串。我希望澄清
答案 0 :(得分:1)
试试这种方式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
Date date = sdf.parse("2016-03-10....");
答案 1 :(得分:1)
但是我需要获取格式化的Date,而不是String,据我所知,我无法将String转换回Date,是吗?
由于您知道DateTime-Format,因此从Date到String的格式非常简单,反之亦然。我个人会创建一个单独的类,其中包含字符串到日期和日期到字符串的转换方法:
// Current date-time:
Date date = new Date();
// Convert the date to a String and print it
String formattedDate = DateConverter.convertDateToString(date);
System.out.println(formattedDate);
// Somewhere else in the code we have a String date and want to convert it back into a Date-object:
Date convertedDate = DateConverter.convertStringToDate(formattedDate);
用法:
compile ('com.squareup.retrofit2:converter-simplexml:2.0.0-beta4'){
exclude module: 'stax-api'
exclude module: 'stax'
exclude module: 'xpp3'
}
答案 2 :(得分:1)
ZonedDateTime.now() // Capture the current moment as seen by the people of a region representing by the JVM’s current default time zone.
.format( DateTimeFormatter.ISO_LOCAL_DATE_TIME ) // Generate a String representing that value using a standard format that omits any indication of zone/offset (potentially ambiguous).
现代方法使用 java.time 类。
以UTC格式捕获当前时刻。
Instant instant = Instant.now() ;
通过特定地区(时区)的人们使用的挂钟时间查看同一时刻。
ZoneId z = ZoneId.of( "Africa/Tunis" ) ;
ZonedDateTime zdt = instant.atZone( z ) ; // Same moment, same point on the timeline, different wall-clock time.
您希望生成一个表示此值的字符串,其格式为缺少任何时区指示或从UTC偏移。我不推荐这个。除非用户读取的上下文对隐式区域/偏移量非常清楚,否则会在结果中引入歧义。但是,如果你坚持, java.time 类预定义了格式化对象,用于该格式化模式:DateTimeFormatter.ISO_LOCAL_DATE_TIME
。
String output = zdt.format( DateTimeFormatter.ISO_LOCAL_DATE_TIME ) ;
java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.Date
,Calendar
和& SimpleDateFormat
现在位于Joda-Time的maintenance mode项目建议迁移到java.time类。
要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310。
您可以直接与数据库交换 java.time 对象。使用符合JDBC driver或更高版本的JDBC 4.2。不需要字符串,不需要java.sql.*
类。
从哪里获取java.time类?
答案 3 :(得分:1)
要格式化数据字段,请执行以下操作
Date today = new Date();
//formatting date in Java using SimpleDateFormat
SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
String date2= DATE_FORMAT.format(today);
Date date;
try {
date = DATE_FORMAT.parse(date2);
setDate(date); //make use of the date
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
以上对我来说非常有效。
答案 4 :(得分:0)
应该可以使用解析方法。使用intellisense检查对象有哪些方法:)或者只需查看javadoc,大多数IDE都可以选择打开java文件。
String dateString = "2016-01-01T00:00:00";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
Date d = sdf.parse(dateString);
答案 5 :(得分:0)
试试这个:
LocalDateTime ldt = Instant.now()
.atZone(ZoneId.systemDefault())
.toLocalDateTime()
答案 6 :(得分:0)
如果您希望String
转换为Date
,则需要使用Date
以String
格式解析DateFormat
。这是一个例子 -
String target = "2016-03-10T15:54:49";
DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
Date result = df.parse(target);
答案 7 :(得分:0)
public String getCurrentDateTime() {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
// get current date time with Date()
Date date = new Date();
return dateFormat.format(date);
}
答案 8 :(得分:0)
时间格式应该相同,否则会得到时间解析器异常
String dateString = "03/26/2012 11:49:00 AM";
SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss aa");
Date convertedDate = new Date();
try {
convertedDate = dateFormat.parse(dateString);
} catch t(ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(convertedDate);
答案 9 :(得分:0)
使用我的代码,我希望它对你有用......
SimpleDateFormat dateFormat= new SimpleDateFormat("dd-MM-yyyy", Locale.ENGLISH);
String str_date=dateFormat.format(new Date());
答案 10 :(得分:0)
是的你可以:) 您可以将字符串转换回日期。
此方法可以帮助您:Date parse(String date);
它返回Date类对象。您只需在此方法中以String格式传递日期。
import java.text.*;
import java.util.*;
class Test {
public static void main(String[] args) throws Throwable {
String date = "2016-03-10T04:05:00";
SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
Date d = s.parse(date);
System.out.println(d);
}
}