gpt4 book ai didi

java - java.util.Calendar 和 timeZones 的问题

转载 作者:行者123 更新时间:2023-11-30 06:30:42 31 4
gpt4 key购买 nike

我有以下方法将我的自定义 DMY(日期、月份、年份)对象转换为日期。

public static Date serverCreateDateFromDMY(DMY pDMY, TimeZone pTimeZone)
{
Calendar vCalendar = Calendar.getInstance(pTimeZone);
vCalendar.set(Calendar.YEAR, pDMY.getYear());
// Below line is because DMY month counts are 1-indexed
// and Date month counts are 0-indexed
vCalendar.set(Calendar.MONTH, pDMY.getMonthOfYear() - 1);
vCalendar.set(Calendar.DAY_OF_MONTH, pDMY.getDayOfMonth());
System.out.println(vCalendar.getTime());
TimeUtilsServer.zeroCalendarHoursAndBelow(vCalendar);
System.out.println(vCalendar.getTime());
return vCalendar.getTime();
}


public static void zeroCalendarHoursAndBelow(Calendar pToZero)
{
pToZero.set(Calendar.HOUR_OF_DAY, 0);
pToZero.set(Calendar.MINUTE, 0);
pToZero.set(Calendar.SECOND, 0);
pToZero.set(Calendar.MILLISECOND, 0);
}

我向 serverCreateDateFromDMY() 方法传递这些参数:DMY=20120424,时区是:America/New_York。应用程序在我的 IST 时区本地运行。

基于以上输入,打印以下输出。

Tue Apr 24 14:43:07 IST 2012

Tue Apr 24 09:30:00 IST 2012

如您所见,上次输出时间并未归零。有什么建议吗?

@Marko,是的,我开始了解 DateFormat 并尝试了以下示例。但日期仍然与时间一起打印,而不是归零。

TimeZone tz = TimeZone.getTimeZone("America/New_York");
Calendar vCalendar = Calendar.getInstance(tz);
vCalendar.set(Calendar.YEAR, 2012);

vCalendar.set(Calendar.MONTH, 4 - 1);
vCalendar.set(Calendar.DAY_OF_MONTH, 24);
DateFormat df = DateFormat.getDateTimeInstance();
df.setTimeZone(tz);
System.out.println(df.format(vCalendar.getTime()));

vCalendar.set(Calendar.HOUR_OF_DAY, vCalendar.getActualMinimum(Calendar.HOUR_OF_DAY));
vCalendar.set(Calendar.MINUTE, vCalendar.getActualMinimum(Calendar.MINUTE));
vCalendar.set(Calendar.SECOND, vCalendar.getActualMinimum(Calendar.SECOND));
vCalendar.set(Calendar.MILLISECOND, vCalendar.getActualMinimum(Calendar.MILLISECOND));
System.out.println(df.format(vCalendar.getTime()));

最佳答案

java Date/Time API 从创建之时起就设计得很糟糕。也许你应该看看一些库 - 例如这个隐藏了 JDK API 缺陷的库 - http://joda-time.sourceforge.net/

关于java - java.util.Calendar 和 timeZones 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10295311/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com