Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何设置日期格式以在URL中用作参数_Java_Date_Datetime - Fatal编程技术网

Java 如何设置日期格式以在URL中用作参数

Java 如何设置日期格式以在URL中用作参数,java,date,datetime,Java,Date,Datetime,我正在使用一个API来获取Java中某个特定日期之前的天气预报 将日期作为URL参数传递的要求是它必须是“YYYY-MM-DD'T'HH:MM:SS”格式。我从用户那里获取这种格式的输入,然后获取当前系统日期,然后循环直到所需的日期。问题在于将输入的日期字符串转换为日期格式,将其递增一天,然后将其转换回URL参数的字符串格式 我正在使用以下代码来执行此操作,但它给出的结果不正确: formatter = new SimpleDateFormat("YYYY-MM-DD'T'HH:MM:SS");

我正在使用一个API来获取Java中某个特定日期之前的天气预报

将日期作为URL参数传递的要求是它必须是“YYYY-MM-DD'T'HH:MM:SS”格式。我从用户那里获取这种格式的输入,然后获取当前系统日期,然后循环直到所需的日期。问题在于将输入的日期字符串转换为日期格式,将其递增一天,然后将其转换回URL参数的字符串格式

我正在使用以下代码来执行此操作,但它给出的结果不正确:

formatter = new SimpleDateFormat("YYYY-MM-DD'T'HH:MM:SS");
Date date1 = formatter.parse(inputtime);
System.out.println(date1);
Calendar c1 = Calendar.getInstance();
c1.setTime(date1);
c1.add(Calendar.DAY_OF_MONTH, 1);  // number of days to add
inputtime = formatter.format(c1.getTime());  // dt is now the new date
System.out.println(c1.getTime());
System.out.println(inputtime);
inputtime
是用户的输入。如果我将“2014-04-12T00:00:00”作为
inputtime
date1
则为“Sun Dec 29 00:00:00 PKT 2013”,
c1.getTime()
返回“Mon Dec 30 00:00 PKT 2013”,根据上述代码块
inputtime
变为“2014-12-364T00:12:00”


<如何纠正这个逻辑错误?

< P>你应该考虑SimuleDATA格式的日期和时间模式:

例如,类似这样的内容:

formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");

试着改变你的约会模式

new SimpleDateFormat("YYYY-MM-DD'T'HH:MM:SS");

信函日期或时间组件演示示例 y年1996年;96 年7月的M个月;7月;07 第189年的D日 d第10个月的第几天 小时,上午/下午(1-12)12号 米小时数30分钟 第55分钟第二秒 S毫秒数978
与java捆绑在一起的java.util.Date和.Calendar类是出了名的麻烦。避开它们

该格式由ISO 8601标准定义。Joda时间库遵循该标准的格式作为解析和生成字符串的默认格式。Java8中的新java.time包也是如此

您的字符串忽略了时区偏移。因此,您需要知道并指定该字符串想要的时区。时区可能是UTC,这意味着时区偏移量为零

一天并不总是24小时。如果您的意思是24小时而不是1天,请调用方法
plusHours(24)

下面是Joda Time 2.3中的示例代码

String input = "2014-01-02T03:04:05";
DateTimeZone timeZone = DateTimeZone.UTC;
DateTime dateTime = new DateTime( input, timeZone );
DateTime tomorrow = dateTime.plusDays( 1 );
String outputWithOffset = tomorrow.toString();
String output = ISODateTimeFormat.dateHourMinuteSecond().print( tomorrow );
Letter Date or Time Component Presentation Examples y Year Year 1996; 96 M Month in year Month July; Jul; 07 D Day in year Number 189 d Day in month Number 10 h Hour in am/pm (1-12) Number 12 m Minute in hour Number 30 s Second in minute Number 55 S Millisecond Number 978
String input = "2014-01-02T03:04:05";
DateTimeZone timeZone = DateTimeZone.UTC;
DateTime dateTime = new DateTime( input, timeZone );
DateTime tomorrow = dateTime.plusDays( 1 );
String outputWithOffset = tomorrow.toString();
String output = ISODateTimeFormat.dateHourMinuteSecond().print( tomorrow );