首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >每月返回零

每月返回零
EN

Stack Overflow用户
提问于 2017-09-22 05:15:53
回答 2查看 3.4K关注 0票数 2

这是一个可能的复制,但我无法弄清楚为什么当指定为MMM时,这个月被返回为零,并且与mm(数字)很好地工作。这里有什么能帮上忙的吗?

代码语言:javascript
复制
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Base64;
import java.util.Date;
import java.util.Locale;

 public class time1 {

 public static void main(String[] args) {

    DateFormat originalFormat = new SimpleDateFormat("dd-MMM-yyyy", Locale.ENGLISH);
    DateFormat targetFormat = new SimpleDateFormat("yyyy-mm-dd");
    Date date = null;
    try {
            date = originalFormat.parse("26-Aug-2011");
    } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
    }
    String formattedDate = targetFormat.format(date);
    System.out.println("old date: " + date);
    System.out.println("new date: " + formattedDate);
 }
}

产出如下:

旧日期:2011年8月26日星期五

新日期: 2011-00-26

当格式更改为dd-mm-yyyy且日期为26-08-2011时,输出为

旧日期:2011年1月26日:07:00

新日期: 2011-07-26

我无法理解MMM失败的原因,我所有的日期都是格式的(26-8月-2011年),我需要把它们转换成yyyy dd (26-07-2011)。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-09-22 05:18:28

文档,我可以说

代码语言:javascript
复制
DateFormat targetFormat = new SimpleDateFormat("yyyy-mm-dd");

需要更改为

代码语言:javascript
复制
DateFormat targetFormat = new SimpleDateFormat("yyyy-MM-dd");
// this gives you the Date in Digits.

根据文件,

“m”用于年月,而 “m”用于每小时一分钟。

因此,您的“mm”将返回默认为00:00的分钟,这是您所得到的输出。这将为您提供以下输出。

代码语言:javascript
复制
old date: Fri Aug 26 00:00:00 IST 2011
new date: 2011-08-26
票数 10
EN

Stack Overflow用户

发布于 2017-09-22 17:15:07

java.time

您正在使用麻烦的旧日期时间类,这些类现在是遗留的,被java.time类取代。

代码语言:javascript
复制
String input = "26-Aug-2011" ;
DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd-MMM-uuuu" , Locale.US ) ;
LocalDate ld = LocalDate.parse( input , f ) ;

您想要的YYYY的输出格式恰好符合ISO 8601标准。java.time类在解析/生成字符串时默认使用标准格式。

代码语言:javascript
复制
String output = ld.toString() ;

2011-08-26

看这个在IdeOne.com现场运行的代码

关于java.time

java.time框架内置到Java8和更高版本中。这些类取代了麻烦的旧遗赠日期时间类,如java.util.DateCalendarSimpleDateFormat

尤达-时间项目现在在维护模式中,建议迁移到java.time类。

要了解更多信息,请参见Oracle教程。并搜索堆栈溢出以获得许多示例和解释。规范是JSR 310

在哪里获得java.time类?

  • Java 8Java 9,以及后来的
    • 内置的。
    • 带有捆绑实现的标准Java的一部分。
    • Java 9添加了一些次要的特性和修复。

  • Java 6Java 7
    • java.time的大部分功能都是在http://www.threeten.org/threetenbp/中移植到Java6&7中的。

三次-额外项目使用其他类扩展java.time。这个项目是将来可能加入java.time的试验场。您可以在这里找到一些有用的类,如IntervalYearWeekYearQuarter更多

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46357295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档