Java 转换为日期

Java 转换为日期,java,date,Java,Date,我正在尝试创建多个Evenment实例,并为它们设置日期: for (int i=2004; i<2009; i++){ evenementen.add(new Evenement("Rock Werchter", "Rock", "Werchter", 200000, (Date)formatter.parse(i+"/07/03"))); 但我似乎无法让它发挥作用 有什么想法吗?您可能需要使用日历来创建

我正在尝试创建多个Evenment实例,并为它们设置日期:

   for (int i=2004; i<2009; i++){
           evenementen.add(new Evenement("Rock Werchter", "Rock", "Werchter", 200000,
                           (Date)formatter.parse(i+"/07/03")));
但我似乎无法让它发挥作用


有什么想法吗?

您可能需要使用日历来创建日期

for (int i=2004; i<2009; i++) {
    Calendar cal = Calendar.getInstance();
    cal.clear();
    // Calendar.JULY may be different depending on the JDK language
    cal.set(i, Calendar.JULY, 3); // Alternatively, cal.set(i, 6, 3); 
    evenementen.add(new Evenement("Rock Werchter", "Rock", "Werchter", 200000,
            cal.getTime()));
}

请注意,月份是以零为基础的,因此7月是6日。

您可能需要使用日历来创建日期

for (int i=2004; i<2009; i++) {
    Calendar cal = Calendar.getInstance();
    cal.clear();
    // Calendar.JULY may be different depending on the JDK language
    cal.set(i, Calendar.JULY, 3); // Alternatively, cal.set(i, 6, 3); 
    evenementen.add(new Evenement("Rock Werchter", "Rock", "Werchter", 200000,
            cal.getTime()));
}

请注意,月份是以零为基础的,因此7月是6月。

请注意日期格式化程序使用的区域设置默认值可以是区域设置。英语是这样设置的,这意味着年份在字符串的末尾,而不是开头

您需要确保在撰写本文时有一个格式化程序构建,2008年,Java6,:


请注意日期格式化程序使用的区域设置默认值可以是locale.ENGLISH。您的操作系统就是这样设置的,这意味着年份是在字符串的末尾,而不是开头

您需要确保在撰写本文时有一个格式化程序构建,2008年,Java6,:

java.time java.util日期时间API及其格式化API SimpleDataFormat已经过时,并且容易出错。建议完全停止使用,并切换到*

使用java.time(现代API)的解决方案: 输出:

了解更多关于java.time的信息,从

*无论出于何种原因,如果您必须坚持使用Java6或Java7,您可以使用哪个backport将大部分Java.time功能移植到Java6&7。如果您正在为Android项目工作,并且您的Android API级别仍然不符合Java-8,请检查并确认。

java.time java.util日期时间API及其格式化API SimpleDataFormat已经过时,并且容易出错。建议完全停止使用,并切换到*

使用java.time(现代API)的解决方案: 输出:

了解更多关于java.time的信息,从

*无论出于何种原因,如果您必须坚持使用Java6或Java7,您可以使用哪个backport将大部分Java.time功能移植到Java6&7。如果您正在为Android项目工作,并且您的Android API级别仍然不符合Java-8,请检查并确认。

怎么了?什么是夜班?格式化程序是如何初始化的?给我们看更多的代码!怎么了?什么是夜班?格式化程序是如何初始化的?给我们看更多的代码!我很确定日期格式化程序的默认值是您的操作系统设置为的值。代码是错误的。我试图用您的格式化程序解析2004/07/03问题中的第一个字符串,预计是2004年7月3日,但得到了2004年1月3日星期六00:00:00 CET。@OleV.V。13年后,事情可能确实发生了变化。当时我正在使用Java6。让我读一下你自己的答案并自学一下。我很确定日期格式化程序的默认值是你的操作系统设置的值。代码是错误的。我试图用您的格式化程序解析2004/07/03问题中的第一个字符串,预计是2004年7月3日,但得到了2004年1月3日星期六00:00:00 CET。@OleV.V。13年后,事情可能确实发生了变化。当时我正在使用Java6。让我读一下你自己的答案,然后自学。
import java.time.LocalDate;
import java.time.Month;

public class Main {
    public static void main(String[] args) {
        for (int i = 2004; i < 2009; i++) {
            System.out.println(LocalDate.of(i, Month.JULY, 3));
        }
    }
}
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Locale;

public class Main {
    public static void main(String[] args) {
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("u/M/d", Locale.ENGLISH);
        for (int i = 2004; i < 2009; i++) {
            LocalDate date = LocalDate.parse(i + "/07/03", dtf);
            System.out.println(date);
        }
    }
}
2004-07-03
2005-07-03
2006-07-03
2007-07-03
2008-07-03