首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java SimpleDateFormat递减日期为一天

Java SimpleDateFormat递减日期为一天
EN

Stack Overflow用户
提问于 2015-03-04 14:34:00
回答 1查看 2.9K关注 0票数 0

我正在尝试使用sdf重新格式化日期字符串。SDF正在将日期缩短一天。指针会有帮助的。

java版本"1.8.0_31“输入:ChangeDateStringFormat(”10-2015年3月“);

代码:

代码语言:javascript
运行
复制
public static String ChangeDateStringFormat (String Input) throws InterruptedException 
{           
    System.out.print("Input Date inside ChangeDateStringFormat : " + Input );

    SimpleDateFormat sdf = new SimpleDateFormat("MMM-dd-yyyy");
    sdf.setTimeZone(TimeZone.getTimeZone("MST"));

    System.out.print(" || Output Date inside ChangeDateStringFormat : " +  sdf.format(new Date(Input)) + "\n");
    return sdf.format(new Date(Input));
}

实际产出:

ChangeDateStringFormat内部输入日期:10-3月-2015年

我期待的产出:

ChangeDateStringFormat内部输入日期:10-2015年3月-2015年

EN

回答 1

Stack Overflow用户

发布于 2015-03-04 14:40:52

这就是问题所在:

代码语言:javascript
运行
复制
new Date(Input)

你不应该用这个。相反,构建一个SimpleDateFormat来解析您的输入:

代码语言:javascript
运行
复制
import java.text.*;
import java.util.*;

public class Test {
    public static void main(String[] args) throws ParseException {
        System.out.println(convertDateFormat("10-Mar-2015"));
    }

    public static String convertDateFormat(String input) throws ParseException {
        TimeZone zone = TimeZone.getTimeZone("MST");
        SimpleDateFormat inputFormat = new SimpleDateFormat("dd-MMM-yyyy", Locale.US);
        inputFormat.setTimeZone(zone);
        SimpleDateFormat outputFormat = new SimpleDateFormat("MMM-dd-yyyy", Locale.US);
        outputFormat.setTimeZone(zone);

        Date date = inputFormat.parse(input);
        return outputFormat.format(date);
    }
}

然而:

  • 如果您只是解析一个日期,最好将UTC指定为时区;您不希望因为时区在午夜切换DST而导致问题。
  • 如果您打算在Java 8上运行这段代码,并且没有比这更低的代码,我强烈建议使用java.time而不是DateCalendar等。
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28857099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档