gpt4 book ai didi

Java日期显示前一天、前一个月和完全不同的年份

转载 作者:行者123 更新时间:2023-12-01 12:03:46 27 4
gpt4 key购买 nike

我正在尝试根据时区显示日期。

如果我将系统时区更改为美国太平洋时区,今天的日期将正确显示。如果我想显示 2000-01-01 输出显示为 12/31/1969。

如果我需要对系统设置或 Java 设置进行任何更改,您能告诉我吗?下面是示例代码:

package timezoneexample;  
import java.text.DateFormat;
import java.util.Date;
import java.util.TimeZone;


public class TimezoneExample {

public static void main(String args[]) {
DateFormat dateFormat = null;

String datePattern = null;
char dateSeperator = '/';
try {
datePattern = "MM/dd/yyyy";
if (datePattern.length() <= 0)
throw new java.util.MissingResourceException(
"Didn't find date format", "", "");
boolean hasSeperatorAlready = false;
for (int i = 0; i < datePattern.length(); i++)
if (!Character.isLetter(datePattern.charAt(i)))
if (hasSeperatorAlready)
throw new java.util.MissingResourceException(
"Unvalid date format", "", "");
else
dateSeperator = datePattern.charAt(i);
} catch (java.util.MissingResourceException mre) {
System.out.println(mre);
}

dateFormat = DateFormat.getDateInstance(DateFormat.MEDIUM);
if (datePattern.length() > 0
&& dateFormat instanceof java.text.SimpleDateFormat) {
java.text.SimpleDateFormat sdf = (java.text.SimpleDateFormat) dateFormat;
sdf.applyPattern(datePattern);
}

dateFormat.setTimeZone(java.util.TimeZone.getDefault());

// enter DOB
Date dob = new Date(2000 - 01 - 01);
Date today = new Date();
String timeZone = System.getProperties().getProperty("user.timezone");

TimeZone tZone = TimeZone.getTimeZone(timeZone);

System.out.println("Timezone : " + tZone);

dateFormat.setTimeZone(tZone);

System.out.println("Date Of Birth : " + dateFormat.format(dob));
System.out.println("Date in Displayed as per Timezone : "
+ dateFormat.format(today));

}

}

输出:

Timezone : sun.util.calendar.ZoneInfo[id="America/Los_Angeles",offset=-28800000,dstSavings=3600000,useDaylight=true,transitions=185,lastRule=java.util.SimpleTimeZone[id=America/Los_Angeles,offset=-28800000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=3,startMonth=2,startDay=8,startDayOfWeek=1,startTime=7200000,startTimeMode=0,endMode=3,endMonth=10,endDay=1,endDayOfWeek=1,endTime=7200000,endTimeMode=0]]

出生日期:1969年12月31日

按时区显示的日期:01/07/2015

最佳答案

您的错误在这里:

Date dob = new Date(2000 - 01 - 01);

这将被解释为:

Date dob = new Date(1998);

这将调用Date(long date)构造函数,结果是接近 1970/01/01 的日期。

您最可能想要的是:

Date dob = new Date(2000, 1, 1);

关于Java日期显示前一天、前一个月和完全不同的年份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27817668/

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