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

变更日期格式

杜炫明
2023-03-14
问题内容

我无法将日期格式更改为dd/MMM/yyyy

这是我当前的实现:

final String OLD_FORMAT = "yyyy-MM-dd";

final String NEW_FORMAT = "yyyy-MMM-dd";

//Start Date
String str4=label.getText();
java.util.Date toDate = null;

//System.out.println(str4);

//End Date
String str5=lblNewLabel_3.getText();
java.util.Date newDateString = null;

SimpleDateFormat format = new SimpleDateFormat(OLD_FORMAT);

try {

    toDate=format.parse(str4);

} catch (ParseException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
}

try {
    newDateString=format.parse(str5);
    format.applyLocalizedPattern(NEW_FORMAT);


} catch (ParseException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();

}

输出:[WST 2013年5月28日星期二00:00:00]

有人可以帮我吗,谢谢!:D

我添加了此while语句,然后将日期格式再次设置为默认格式。

System.out.println("From " + toDate);

System.out.println("To " + newDateString );

Calendar cal2 = Calendar.getInstance();

cal2.setTime(toDate);

System.out.println(toDate);

while (cal2.getTime().before(newDateString)) {
    cal2.add(Calendar.DATE, 1);
    Object datelist=(cal2.getTime());
    List<Object> wordList = Arrays.asList(datelist);  
    System.out.println(wordList);
}

问题答案:

java.util.Date没有格式。它仅是格林尼治标准时间1970年1月1日00:00:00以来的毫秒数

当您执行操作时,System.out.println(new Date())它只是提供Date对象的默认toString方法输出。

您需要使用DateFormat将实际格式化DateString

public class TestDate01 {

    public static final String OLD_FORMAT = "yyyy-MM-dd";
    public static final String NEW_FORMAT = "yyyy-MMM-dd";

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        try {
            String oldValue = "2013-05-29";
            Date date = new SimpleDateFormat(OLD_FORMAT).parse(oldValue);
            String newValue = new SimpleDateFormat(NEW_FORMAT).format(date);
            System.out.println("oldValue = " + oldValue + "; date = " + date + "; newValue = " + newValue);
        } catch (ParseException exp) {
            exp.printStackTrace();
        }
    }
}

哪个输出…

oldValue = 2013-05-29; date = Wed May 29 00:00:00 EST 2013; newValue = 2013-May-29

扩展以满足变更的要求

您犯了同样的错误。 Date是一个自历元以来的毫秒数的容器,它没有自己的格式,而是使用自己的格式。

try {
    Date toDate = new Date();
    String newDateString = "2013-05-31";

    System.out.println("From " + toDate);
    System.out.println("To " + newDateString);

    Date endDate = new SimpleDateFormat(OLD_FORMAT).parse(newDateString);

    System.out.println("endDate " + endDate);

    Calendar cal2 = Calendar.getInstance();
    cal2.setTime(toDate);
    System.out.println(toDate);

    SimpleDateFormat newFormat = new SimpleDateFormat(NEW_FORMAT);

    while (cal2.getTime().before(endDate)) {
        cal2.add(Calendar.DATE, 1);
        Date date = (cal2.getTime());
        System.out.println(date + "/" + newFormat.format(date));
    }
} catch (Exception exp) {
    exp.printStackTrace();
}

哪个输出…

From Wed May 29 15:56:48 EST 2013
To 2013-05-31
endDate Fri May 31 00:00:00 EST 2013
Wed May 29 15:56:48 EST 2013
Thu May 30 15:56:48 EST 2013/2013-May-30
Fri May 31 15:56:48 EST 2013/2013-May-31

while没有道理。

Object datelist=(cal2.getTime());
List<Object> wordList = Arrays.asList(datelist);

cal2.getTime()返回一个Date,然后尝试从中创建一个列表…虽然我可能遗漏了一些…



 类似资料:
  • 我试图将从PostgreSQL表中提取的字符串(使用索引聚合数组)转换为正确格式化的日期进行查询。我的问题是我的日期格式不同,包括YYYY、Mon-yyy和DD-Mon-y。我的计划是创建日期范围,以包含由模糊日期表示的所有可能时间。例如,“2000”将转换为“2000年1月1日”和“2000年12月31日”,并根据自定义输入日期范围进行测试。同样,“2014年2月”也将改为“2014年1月1日”

  • 问题内容: 我的任务是在每次日期更改时(每12am)触发一种刷新或重置我的应用程序的方法。我试图在网上搜索答案,但找不到任何东西。我可以使用Android中的任何方法/或侦听器吗?或任何方法?有什么建议吗? 问题答案: 是的,您可以在Android上收听日期/时间更改。为此,请在您的Activity中显式注册以下意图过滤器的BroadcastReceiver: 此意图每分钟发送一次。您 不能通过

  • 问题内容: 我试图改变对象的格式,我试图以这种方式做到这一点: 但这对对象没有任何影响,仍然是旧格式,无法真正理解为什么会这样。 问题答案: 请尝试将两个概念区分开:您的数据和向用户呈现的数据(或用于其他目的的格式设置,例如包含在JSON中)。的保持值7可以表示为(格式化成)7,07,007或7,同时仍保持刚好相同的值而没有任何格式化信息- 外的格式化谎言。同样,a 具有一个时间点,它可以表示为(

  • 我有Date对象的格式 我是怎么做到的?。 我试着用这个代码 当我试着做一个测试时,我会得到这样的结果: 我的问题是在sql将java.util.date更改为java.sql.date时出现的 我解决了这个问题,所以: 和测试:

  • 但这对对象没有任何影响,它还是用旧格式的,不能真正理解它为什么会那样。