【问题标题】:Calendar return wrong current date android日历返回错误的当前日期android
【发布时间】:2012-10-25 18:08:34
【问题描述】:

为什么这段代码返回 0001-02-05?

public static String getNowDate() throws ParseException
{        
    return Myformat(toFormattedDateString(Calendar.getInstance()));
}

我把代码改成:

public static String getNowDate() throws ParseException
{        
    Calendar temp=Calendar.getInstance();
    return temp.YEAR+"-"+temp.MONTH+"-"+temp.DAY_OF_MONTH;
}

现在它返回 1-2-5。

请帮我知道实际日期。我只需要 Sdk 日期。

【问题讨论】:

  • 谢谢!但是亚历克斯,已经帮助我了。

标签: java android calendar


【解决方案1】:

Calendar.YEAR、Calendar.MONTH、Calendar.DAY_OF_MONTH 是 int 常量(只需在 API doc 中查找)...

因此,正如 @Alex 所发布的,要从 Calendar 实例中创建格式化的 String,您应该使用 SimpleDateFormat。

如果您需要特定字段的数字表示,请使用get(int) 函数:

int year = temp.get(Calendar.YEAR);
int month = temp.get(Calendar.MONTH);
int dayOfMonth = temp.get(Calendar.DAY_OF_MONTH);

警告! 月份从 0 开始!!!我因此犯了一些错误!

【讨论】:

  • +1 表示警告。最愚蠢的部分是 Calendar.MONTH 从零开始,但 DatePickerDialog 的一年中月份的输入却没有。下定决心 android /:
  • 这条评论是我的问题的解决方案 - “警告!月份从 0 开始!!!因此我犯了一些错误!”为什么让这个变得如此有趣,月份从 0 到 11,而不是从 1..12))
【解决方案2】:

使用SimpleDateFormat

new SimpleDateFormat("yyyy-MM-dd").format(Calendar.getInstance().getTime());

您正在使用要与Calendar.get() 方法一起使用的常量。

【讨论】:

  • 不,看来我不是 Jon Skeet ;-)
  • Loooong 的路要走 :) 不过谢谢,我会照原样处理的 ;)
【解决方案3】:

为什么不使用SimpleDateFormat?

public static String getNowDate() {
  return new SimpleDateFormat("yyyy-MM-dd").format(new Date());
}

【讨论】:

    【解决方案4】:

    你做错了。改为:

    return temp.get(Calendar.YEAR)+"-"+ (temp.get(Calendar.MONTH)+1) +"-"+temp.get(Calendar.DAY_OF_MONTH);
    

    另外,您可能想查看Date:

    Date dt = new Date();
    //this will get current date and time, guaranteed to nearest millisecond
    System.out.println(dt.toString());
    //you can format it as follows in your required format
    System.out.println(new SimpleDateFormat("yyyy-MM-dd").format(dt));
    

    【讨论】:

    • 这些很丑。 SimpleDateFormat 正是 OP 所需要的......而且 Date.toString() 不值得依赖!
    • 哇,真的吗? OP想要修复他的代码。我给了他解决办法。我添加了一条说明,他可能想调查 Date。你建议 SimpleDateFormat,但你完全误解了那里。 SimpleDateFormat 现在不给你日期时间,它只格式化给定的日期时间。那么你建议从哪里获取现在的日期时间? Date 还是 Calendar?你-1我对此的回答?难以置信...
    • Date 在 NOW 获取日期时间时保证精确到毫秒,并且优于 Calendar。就实际目的而言,没有什么不可靠的。另请注意,我刚刚更新了答案以表明当我需要像 OP 那样格式化的日期时,我根本不会依赖 Date.toString()。我使用原来的Date 对象。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-27
    • 2018-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多