Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用java将dateTime转换为dd/MM/yy格式的日期_Java_Date_Datetime - Fatal编程技术网

用java将dateTime转换为dd/MM/yy格式的日期

用java将dateTime转换为dd/MM/yy格式的日期,java,date,datetime,Java,Date,Datetime,我有一个JODADateTime2012-12-31T13:32:56.483+13:00。我想将其转换为dd/MM/yy格式的日期。所以我希望代码返回的日期是-31/12/12 代码- // Input dateTime = 2012-12-31T13:32:56.483+13:00 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/MM/yy"); Date date = simpleDateFo

我有一个JODA
DateTime
2012-12-31T13:32:56.483+13:00。我想将其转换为
dd/MM/yy
格式的日期。所以我希望代码返回的日期是-31/12/12

代码-

    // Input dateTime = 2012-12-31T13:32:56.483+13:00
    SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/MM/yy");
    Date date = simpleDateFormat.parse(dateTime.toString("dd/MM/yy"));
结果:

Output - Mon Dec 31 00:00:00 NZDT 2012
Expected Output - 31/12/12
当我执行以下操作时,我得到了预期的输出,但我不知道如何将其转换为日期-

String string = simpleDateFormat.format(date); 
请帮帮我

Thx


编辑-我希望最终结果是日/月/年格式的Util Date。我不想要字符串输出。我的输入是JodaDateTime yyyy MM ddThh:MM:ss:+GMT。我需要将JodateTime转换为UtilDate。

正如我最初所说,日期对象没有固有的格式
java.util.Date
保存毫秒时间值,表示日期和时间。通过选择DateFormat,可以从字符串解析日期,或将日期格式化为字符串

字符串可以按照规范进行格式化,但是它们后面的日期对象总是完全精确的&没有任何固有的格式概念


要将组合的“日期和时间”
java.util.date
截断为仅包含日期组件,并将其有效保留在午夜:

public static Date truncateTime (Date date) {
    Calendar cal = Calendar.getInstance();
    cal.setTime( date);
    cal.set( Calendar.HOUR_OF_DAY, 0);
    cal.set( Calendar.MINUTE, 0);
    cal.set( Calendar.SECOND, 0);
    cal.set( Calendar.MILLISECOND, 0);
    return cal.getTime();
}
如果您来自JodaTime
DateTime
,您可以更轻松地在JodaTime API中完成这项工作

public static Date truncateJodaDT (DateTime dt) {
    java.util.Date result = dt.toDateMidnight().toDate();
    return result;
}
希望这有帮助

见:


现在我又不确定你想要什么。现在要字符串格式的日期吗

return simpleDateFormat.format( date);    // from java.util.Date
或使用JodaTime:

return dateTime.toString( "dd/MM/yy");    // from org.joda.time.DateTime
这是你怎么做的

Format formatter = new SimpleDateFormat("dd/MM/yy");
String string = formatter.format(date);

使用Java8提供的日期时间类

LocalDate parsedDate = LocalDate.parse(dateStr,DateTimeFormatter.ISO_ZONED_DATE_TIME);
tl;博士 Joda时间被java.Time取代 该项目现已启动,建议迁移到类

ISO 8601 您的输入字符串是标准格式的

默认情况下,java.time类使用标准格式,因此无需指定格式模式

日期时间对象与字符串 正如所解释的,您不应该将日期时间对象与可能以文本形式表示其值的字符串合并。
java.util.Date
对象没有格式,因为它没有文本。java.time类也是如此。您可以使用java.time对象来解析字符串,或生成字符串,但该对象与字符串不同,并且是独立的

OffsetDateTime
将输入字符串解析为
OffsetDateTime
,因为它包含UTC的偏移量,尽管它没有时区

OffsetDateTime odt = OffsetDateTime.parse( "2012-12-31T13:32:56.483+13:00" );
LocalDate
如果只需要日期值,请使用
LocalDate
类。请记住,对于任何给定的时刻,全球各地的日期因时区而异。午夜过后一分钟在巴黎是新的一天,而在魁北克山仍然是“昨天”。如果要从相同偏移量
+13:00
获取日期,只需调用
toLocalDate

LocalDate localDate = odt.toLocalDate();
问题是,您不需要字符串,只需要日期对象。好了。如果以后需要字符串,请调用
toString
,以标准ISO 8601格式生成字符串,
2012-12-31
。对于其他格式,请在堆栈溢出中搜索
DateTimeFormatter


关于java.time 该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,例如,&

该项目现已启动,建议迁移到类

要了解更多信息,请参阅。并搜索堆栈溢出以获得许多示例和解释。规格是

从哪里获得java.time类

  • 后来
    • 内置的
    • 标准JavaAPI的一部分,带有捆绑实现
    • Java9添加了一些次要功能和修复
    • 大部分java.time功能都在中向后移植到Java6和Java7
    • 该项目专门为Android采用了ThreeTen Backport(如上所述)

该项目使用其他类扩展了java.time。这个项目是java.time将来可能添加的一个试验场。您可以在这里找到一些有用的类,如、、和。

My date变量将Mon Dec 31 00:00:00 NZDT 2012作为输出。当我格式化时,我得到了正确的格式,但如何转换为日期?
Date
是日期。格式化将其转换为字符串。因此,您已经正确解析了日期!如果确实需要,可以将字符串解析回日期。。但您已经做过一次:)我知道使用格式将日期转换为字符串。在此之前,当我执行date=simpleDataFormat.parse(dateTime.toLocalDate().toString(“dd/MM/yy”);我得到2012年12月31日周一00:00:00 NZDT,但我希望它能给我2012年12月31日…:(你的问题很不清楚。我编辑了我的帖子,其中包括了你可能正在尝试做的其他事情,但也许你应该正确地告诉我们你正在尝试实现什么。你想要什么样的结果数据类型&你打算如何/在何处使用它?@Sara:正如Thomas在之前的评论中所说,
Date
对象没有格式因此,不可能“拥有格式为
dd/MM/yy
Date
对象”。当您将
日期
转换为
字符串
进行格式化时,可以指定格式。
SimpleDataFormat
对象知道格式,但不知道
日期
对象本身。是的。我也不喜欢它,但db在我的架构中只允许2位数的年份。此外,对于4位数的年份,我也会得到相同的错误。日期本身并不具有e格式。日期可以通过指定的DateFormat格式化为字符串或从字符串中解析,但它本身并不具有格式。我正在尝试转换JodaTime->java.util.Date并截断时间组件,以dd/MM/yy格式获取结果日期。谢谢!我将在下面编辑我的答案。谢谢Sara。可能这就是你想要的寻找?
LocalDate localDate = odt.toLocalDate();