格式化日期并返回日期,而不是字符串

时间:2016-03-10 10:21:15

标签: java android date

我需要使用以下格式获取当前时间的日期" 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。 此外,我需要返回的日期是当前时间的日期,而不是静态字符串。我希望澄清

11 个答案:

答案 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)

TL;博士

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

现代方法使用 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.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.DateCalendar和& SimpleDateFormat

现在位于Joda-Timemaintenance 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,则需要使用DateString格式解析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);
   }
}