当前位置: 首页 > 面试题库 >

Calendar.getInstance给出错误的日期

宫晟
2023-03-14
问题内容

我创建了一些小的方法作为Util类,例如以下代码:

public class Util
{
  public static final String DATETIME_PATTERN="YYYY/MM/DD - HH:mm:ss";

  public static String getDateTime()
  {
    SimpleDateFormat sdf=new SimpleDateFormat(DATETIME_PATTERN);
    return sdf.format(getToday());
  }

  public static Date getToday()
  {
    //Calendar today=Calendar.getInstance(); //didn't help
    Calendar today=Calendar.getInstance(Locale.TAIWAN); //didn't fix
    //Calendar today=Calendar.getInstance(TimeZone.getTimeZone("GMT+08:00")); //didn't fix as well
    return today.getTime();
  }
}

并且,进行了非常简单的运行,如下所示:

//run in main class
System.out.println("Generating sitemap.xml, please wait..."+Util.getDateTime());

结果是一个很奇怪的日期-> 2017/07/187

//Console result:
Generating sitemap.xml, please wait...2017/07/187 - 15:27:21

搜索了类似的问题,并尝试了TimeZone,Locale,但没有帮助。有什么建议 ?

顺便说一句,这是我的环境:

  • Windows7 x86
  • JDK 1.8.0.131 x86
  • Oxygen corrosion of x86

问题答案:

您格式化日期的方式有问题。尝试将其更改为此

  public static final String DATETIME_PATTERN="yyyy/MM/dd - HH:mm:ss";


 类似资料:
  • 问题内容: 我有一个简单的方法,应该获取当前日期,将其放入某种格式,然后将其作为String返回。到目前为止,一切都很好(上次尝试于1月31日进行),但由于某种原因,当我今天尝试使用它时,它返回字符串“2013-02-43”。 显然,二月份没有43天,而且我不知道为什么要返回此日期。我到处都在寻找解决方案,但似乎没有一个适合我遇到的特定问题。这是代码: 仅出于记录目的,我尝试使用Calendar.

  • 问题内容: 我有一个具有日期字段的类,该日期字段表示一条数据的“有效起始日期”。定义如下: 从我从数据库中提取日期并显示它的那一点似乎一切正常。如果我在前端选择日期2003年9月18日,那么当我检查数据库时要保存足够的日期,即保存日期(数据库为MySQL 5.5.9列类型为DATE)。但是,当我调出列表记录时,显示的日期是2003年9月17日-提前一天。 如果我选择年初或晚于2003年3月26日或

  • 我有一个简单的方法,可以获取当前日期,将其转换为特定格式,然后作为字符串返回。到目前为止,它还不错(上次尝试是在1月31日左右),但由于某种原因,当我今天尝试它时,它返回字符串“2013-02-43”。 现在很明显,2月份没有43天,我不知道为什么它会返回这个。我到处寻找解决方案,但似乎没有一个适合我的具体问题。以下是代码: 为了记录在案,我尝试过使用Calendar.get实例()等。结果相同。

  • 我试图用< code>Proguard生成一个APK,每次都出现这个错误。它警告我一些我找不到的内部类,并且名称看起来很模糊,如下所示: 类错误:(b . a . a . a . a . a . b . o) 这是我的proGuard文件: 这是我得到的完整错误日志: 错误:警告:忽略匿名内部类的“内部类”属性 错误:(b.a.a.a.a.b.o) 未附带“错误:关联的封闭方法”属性。此类可能是由

  • 我使用下面的代码来格式化日期。但是当我以不正确的格式给出数据时,它会给出意想不到的结果。 在上述情况下,输出为-formattedVal:0009-02-05。 它不是抛出解析异常,而是解析值并给我一个不正确的输出。有人能帮我理解这种反常的行为吗。

  • 问题内容: 我从控制器中的java()发送此日期,输入的类型为 如下: 当我得到这个日期与ajax为: 转换成 那么,为什么我得到错误的一小时约会呢? 解 我们通过以下方式解决它 因为这是夏令时(DST)或夏令时的问题。好文章 问题答案: 我认为这可能是 夏令时的 问题。您可以检查客户端的时区和服务器的时区。(Web服务器或SQL Server)