jsr-310有一个方便的类DateTimeFormatters
,允许你构建一个DateTimeFormatter
.我特别喜欢这个pattern(String)
方法 - 请参阅javadoc
但是,我遇到了一个问题,即这是区分大小写的 - 例如
DateTimeFormatters.pattern("dd-MMM-yyyy");
Run Code Online (Sandbox Code Playgroud)
与"01-Jan-2012"匹配,但不与"01-JAN-2012"或"01-jan-2012"匹配.
一种方法是断开字符串并解析组件,或者另一种方法是使用Regex用区分大小写的字符串替换不区分大小写的字符串.
但感觉应该有一个更简单的方法......
我假设Java有一些内置的方法来做到这一点.
在给定日期的情况下,如何确定该日期前一天的日期?
例如,假设我被授予3/1/2009.上一个日期是2009年2月28日.如果我获得了3/1/2008,那么上一个日期将是2/29/2008.
我需要在Java中解析日期的RFC 2822字符串表示.这里有一个示例字符串:
星期六,2010年3月13日11:29:05 -0800
它看起来很讨厌,所以我想确保我做的一切都正确,并且会在以后通过AM-PM /军事时间问题,UTC时间问题,我没有预料到的问题等解释错误而遇到奇怪的问题等等. ...
谢谢!
如果你能想象的话,这会在我的软件中引起Y2K风格的错误.奇怪的是,一年的计算只发生在一年中的两天,我不太确定如何排除故障.
输出:
03-Jan-2013
02-Jan-2013
01-Jan-2013
31-Dec-2013 ** strange
30-Dec-2013 ** strange
29-Dec-2012
28-Dec-2012
27-Dec-2012
26-Dec-2012
25-Dec-2012
Run Code Online (Sandbox Code Playgroud)
我不确定Java日期实用程序的哪一部分可能导致此类错误.
代码(因为测试很小,我包括一个完整的工作程序):
import java.util.Calendar;
import java.util.Date;
import java.text.SimpleDateFormat;
public class DateT {
private static String getFormattedBackscanStartTime(int days) {
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MMM-YYYY");
Calendar workingDate = Calendar.getInstance();
workingDate.add(Calendar.DATE, -1 * days);
String formattedStartTime = dateFormat.format(workingDate.getTime());
return formattedStartTime;
}
public static void main(String args[]) {
for(int i = 35; i < 45; i++) {
System.out.println(getFormattedBackscanStartTime(i));
}
}
}
Run Code Online (Sandbox Code Playgroud) 我有这个.
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String monthName = br.readLine();
Run Code Online (Sandbox Code Playgroud)
如何获取monthName变量中包含的月份数?谢谢!
我使用此下拉列表为应用程序存储与UTC相关的时区:
<select id="timezone" name="timezone" >
<option value="-12">[UTC - 12] Baker Island Time</option>
<option value="-11">[UTC - 11] Niue Time, Samoa Standard Time</option>
<option value="-10">[UTC - 10] Hawaii-Aleutian Standard Time, Cook Island Time</option>
<option value="-9.5">[UTC - 9:30] Marquesas Islands Time</option>
<option value="-9">[UTC - 9] Alaska Standard Time, Gambier Island Time</option>
<option value="-8">[UTC - 8] Pacific Standard Time</option>
<option value="-7">[UTC - 7] Mountain Standard Time</option>
<option value="-6">[UTC - 6] Central Standard Time</option>
<option value="-5">[UTC - 5] Eastern Standard Time</option>
<option value="-4.5">[UTC …
Run Code Online (Sandbox Code Playgroud) 如何将2013-06-24转换为2013年6月24日?我使用以下代码.
date1="2013-06-24";
SimpleDateFormat d= new SimpleDateFormat("dd MMM yyyy");
try{
date2 = d.parse(date1);
}catch (ParseException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
但我收到此错误"java.text.ParseException:Unparseable date:"2013-06-24"(在偏移4处)"
我试图使用java 8或utils包将string中的datetime转换为即时.
例如.
String requestTime = "04:30 PM, Sat 5/12/2018";
Run Code Online (Sandbox Code Playgroud)
至
Instant reqInstant should result in 2018-05-12T20:30:00.000Z
Run Code Online (Sandbox Code Playgroud)
reqString位于美国/多伦多时区.
这是我试过的
String strReqDelTime = "04:30 PM, Sat 5/12/2018";
Date date = new SimpleDateFormat("hh:mm a, EEE MM/dd/yyyy").parse(requestTime);
Instant reqInstant = date.toInstant();
Run Code Online (Sandbox Code Playgroud)
上面的代码导致了"2018-05-12T23:30:00Z"
.
任何帮助表示赞赏.
Java中是否有可用于转换MM/DD/YYYY
为的方法DD-MMM-YYYY
?
例如:05/01/1999
to01-MAY-99
谢谢!
我无法弄清楚为什么下面代码的时区一直显示UTC而不是EST.在我的本地计算机上它显示EST,即使我在MST时间但在实际服务器上它仍然显示UTC.任何线索?
Mon Nov 9 2015 1:58:49 PM UTC
@JsonIgnore
public String getDateCreatedFormatted() {
Calendar calendar = Calendar.getInstance();
calendar.setTime(getDateCreated());
calendar.setTimeZone(TimeZone.getTimeZone("EST"));
SimpleDateFormat format = new SimpleDateFormat("EEE MMM d yyyy h:mm:ss a z");
return format.format(calendar.getTime());
}
Run Code Online (Sandbox Code Playgroud)