我们考虑以下代码:
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss dd/MM/yyyy", Locale.US);
long start = sdf.parse("10:30:00 30/09/2009").getTime();
long end = sdf.parse("10:30:00 30/10/2009").getTime();
Calendar c = Calendar.getInstance(Locale.US);
c.setTimeInMillis(start);
System.out.println("Start = " + c.getTime());
c.setTimeInMillis(end);
System.out.println(" End = " + c.getTime());
Run Code Online (Sandbox Code Playgroud)
运行此代码段时,我有以下输出:
Start = Wed Sep 30 10:30:00 CEST 2009
End = Fri Oct 30 10:30:00 CET 2009
Run Code Online (Sandbox Code Playgroud)
为什么我会得到不同的时区?
请注意,如果我在8月设置第一个日期而在9月设置第二个日期,则输出将在两种情况下显示相同的时区:
long start = sdf.parse("10:30:00 30/08/2009").getTime();
long end = sdf.parse("10:30:00 30/09/2009").getTime();
Run Code Online (Sandbox Code Playgroud)
将显示:
Start = Sun Aug 30 10:30:00 CEST 2009
End = Wed Sep 30 10:30:00 CEST …Run Code Online (Sandbox Code Playgroud) 我正在使用Joda来解析日期并使用不使用前导零的格式,例如:
Mon Nov 20 14:40:36 2006
Mon Nov 6 14:40:36 2006
Run Code Online (Sandbox Code Playgroud)
请注意,dayOfMonth字段用空白填充.
目前我似乎必须使用两种不同的格式,如果一个失败则重新分析
"EEE MMM dd HH:mm:ss yyyy"
"EEE MMM d HH:mm:ss yyyy"
Run Code Online (Sandbox Code Playgroud)
是否有单一格式(或API开关)处理这两种情况?(SimpleDateFormat的答案是一样的 - 我不使用它?)
我有时间以毫秒为单位.1308700800000; 我需要把它转换成类似的东西 Jun 9'11 at 02:15 PM.
我试过用
SimpleDateFormat format = new SimpleDateFormat("MMM D'\''YY");
Run Code Online (Sandbox Code Playgroud)
但我得到一个例外:
Caused by: java.lang.IllegalArgumentException: Unterminated quote
Run Code Online (Sandbox Code Playgroud)
任何帮助将受到高度赞赏.
我知道有关于此的几个问题.但是我遇到了特定日期模式的问题.这是一个例子:
20130401100000[-03:EST]
Run Code Online (Sandbox Code Playgroud)
我跟你说话是-03因为根据SimpleDateFormat文件它应该有4位数.我得到的最接近的模式是:
yyyyMMddHHmmss'['Z':'z']'
Run Code Online (Sandbox Code Playgroud)
但由于2位数它只是不起作用.这是我用于测试的代码示例:
public static void main(String[] args) throws ParseException {
String input = "20130401100000[-03:EST]";
DateFormat df = new SimpleDateFormat("yyyyMMddHHmmss'['Z':'z']'");
df.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println(df.format(new Date()));
System.out.println(df.parse(input));
}
Run Code Online (Sandbox Code Playgroud)
当我打印new Date()我得到这个:
20130528155734[+0000:GMT]
Run Code Online (Sandbox Code Playgroud)
但是当我尝试解析时,input我得到以下异常:
Exception in thread "main" java.text.ParseException: Unparseable date: "20130401100000[-03:EST]"
at java.text.DateFormat.parse(DateFormat.java:337)
at Teste.main(Teste.java:17)
Run Code Online (Sandbox Code Playgroud)
我正在开发和Android应用程序,我需要计算两次之间的差异.我需要计算24小时的时差,以及两天的时间差(例如今天下午5点到明天上午9点).
我尝试了以下代码,计算仅适用于24小时的差异,
String dateStart = "08:00:00";
String dateStop = "13:00:00";
//HH converts hour in 24 hours format (0-23), day calculation
SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss");
Date d1 = null;
Date d2 = null;
try
{
d1 = format.parse(dateStart);
d2 = format.parse(dateStop);
//in milliseconds
long diff = d2.getTime() - d1.getTime();
long diffHours = diff / (60 * 60 * 1000) % 24;
Log.e("test",diffHours + " hours, ");
}
catch (Exception e)
{
// TODO: handle exception
}
Run Code Online (Sandbox Code Playgroud) 我想获取一周的第一个日期.
我的输入将是像2014年7月26日的字符串类型".
我需要获得上述日期(2014年7月26日)的第一周日期.
我需要MM/dd/YYYY格式的输出日期.
基本上我需要输出为07/21/2014.
请给我java程序.我已经做到了这一点
SimpleDateFormat formatter1 = new SimpleDateFormat("MM/dd/yy");
String date ="07/26/2014";
Date Currentdate = formatter1.parse(date);
int currentday=Currentdate.getDay();
Calendar calendar = Calendar.getInstance();
calendar.setTime(Currentdate);
int startDay=currentday-calendar.getFirstDayOfWeek();
Currentdate.setDate(contacteddate.getDate()-startDay);
System.out.println(contacteddate.getDate());
}
Run Code Online (Sandbox Code Playgroud)
上面的代码只给我一个日期..我需要在"MM/dd/YYYY"中的日期和月份和年份请帮助
我从服务器获取此字符串:
[
{
"title":"spoil the ones u love today",
"startDateTime":"2014-08-10T20:10:36.7158Z"
},
{
"title":"home made patisserie",
"startDateTime":"2014-08-10T20:08:45.0218Z"
}
]
Run Code Online (Sandbox Code Playgroud)
我试着解析它一个对象
public class Offer implements Serializable {
public String title;
public Date startDateTime;
}
Type collectionType = new TypeToken<ArrayList<Offer>>() {}.getType();
mOffersList.addAll((Collection<? extends Offer>) gson.fromJson(result, collectionType));
Run Code Online (Sandbox Code Playgroud)
但是当我将"startDate"定义为Date时
我从gson回来的系列是空的
当我将"startDate"定义为String时
集合正确填充.
我想更改其日期格式.这就是我喜欢将它保存为Date对象的原因.
我试过了
Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ").create;
然而Gson无法解析服务器的字符串
Date startDateTime.没有添加任何东西mOffersList,它保持空白.
我究竟做错了什么?
我试图读取一个代表希腊日期时间的字符串(如"28Μαρτίου2014,14:00")使用SimpleDateFormat,但它会引发java.text.ParseException: Unparseable date: "28 ??????? 2014, 14:00"错误.
这是一个示例代码:
Locale locale = new Locale("el-GR");
SimpleDateFormat formatter = new SimpleDateFormat("dd MMMM yyyy, HH:mm", locale);
try {
sDate = (Date) formatter.parse("28 ??????? 2014, 14:00");
} catch (ParseException ex) {
ex.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
我也试过locales el和el_GR,但没有运气.
有什么建议?
我正在尝试解析一个String使用SimpleDateFormat.
这是我目前的代码:
public String getCreatedDateTime() {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-ddEHH:mm:ss.zzzz");
try {
Date date = simpleDateFormat.parse("2015-06-27T13:16:37.363Z");
return date.toString();
} catch (ParseException e) {
return "Error parsing date";
}
}
Run Code Online (Sandbox Code Playgroud)
如您所见,我只是在parse()方法中放置一个常量用于测试目的.
所以,这就是我要解析的内容:
2015-06-27T13:16:37.363Z
这是SimpleDateFormat我使用的模式:
YYYY-MM-ddEHH:MM:ss.zzzz
我一直得到ParseException.
我知道这可能是因为最后的.zzzz,但我不知道.363Z可能代表什么,所以我只是使用了一些随机字母.馊主意.
我会非常感谢你的帮助.谢谢!
我正在使用a SimpleDateFormat,我从两个不同的来源获得结果.一个源使用该格式"yyyy-MM-dd HH:mm:ss",而另一个使用"yyyy-MM-ddTHH:mm:ssZ".我对从第二种格式获取时区('Z'值)不感兴趣,有没有一种方法可以获得这些时间而不使用不同的格式字符串?有些东西会忽略中间字符以及之后的字符'ss'.