如果我运行以下程序,它解析引用时间间隔为1秒的两个日期字符串并比较它们:
public static void main(String[] args) throws ParseException {
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String str3 = "1927-12-31 23:54:07";
String str4 = "1927-12-31 23:54:08";
Date sDt3 = sf.parse(str3);
Date sDt4 = sf.parse(str4);
long ld3 = sDt3.getTime() /1000;
long ld4 = sDt4.getTime() /1000;
System.out.println(ld4-ld3);
}
Run Code Online (Sandbox Code Playgroud)
输出是:
353
为什么ld4-ld3不1(正如我所期望的那样,在时间上只有一秒钟的差异),但是353?
如果我将日期更改为1秒后的时间:
String str3 = "1927-12-31 23:54:08";
String str4 = "1927-12-31 23:54:09";
Run Code Online (Sandbox Code Playgroud)
然后ld4-ld3会1.
Java版本:
java version "1.6.0_22"
Java(TM) SE Runtime Environment (build 1.6.0_22-b04) …Run Code Online (Sandbox Code Playgroud) 所以我从表单中的传入对象获取日期属性:
Tue May 24 05:05:16 EDT 2011
Run Code Online (Sandbox Code Playgroud)
我正在编写一个简单的帮助方法将其转换为日历方法,我使用以下代码:
public static Calendar DateToCalendar(Date date )
{
Calendar cal = null;
try {
DateFormat formatter = new SimpleDateFormat("yyyyMMdd");
date = (Date)formatter.parse(date.toString());
cal=Calendar.getInstance();
cal.setTime(date);
}
catch (ParseException e)
{
System.out.println("Exception :"+e);
}
return cal;
}
Run Code Online (Sandbox Code Playgroud)
为了模拟传入的对象,我只是在当前使用的代码中分配值:
private Date m_lastActivityDate = new Date();
Run Code Online (Sandbox Code Playgroud)
然而,一旦该方法到达,这将给我一个空指针:
date = (Date)formatter.parse(date.toString());
Run Code Online (Sandbox Code Playgroud) 我正在添加这个问题,因为我是Java和Android的新手,我搜索了几个小时试图解决这个问题.答案来自相关答案的组合,所以我想我会记录我为其他可能正在努力的人学到的东西.见答案.
对于一些背景知识,我的经验主要是PHP的Web开发和一点Ruby.我唯一的操作系统是Linux(Ubuntu Studio),我(不情愿地)在Android Studio 2.1.2中开发我的第一个Android应用程序.我的Java设置如下:
>java -version
> openjdk version "1.8.0_91"
> OpenJDK Runtime Environment (build 1.8.0_91-8u91-b14-3ubuntu1~15.10.1-b14)
> OpenJDK 64-Bit Server VM (build 25.91-b14, mixed mode)
Run Code Online (Sandbox Code Playgroud) datetime android android-gradle-plugin threetenbp threetenabp
我需要一个Java程序来获取没有时间戳的当前日期:
Date d = new Date();
Run Code Online (Sandbox Code Playgroud)
给我日期和时间戳.
但我只需要日期,没有时间戳.我使用此日期与另一个没有时间戳的日期对象进行比较.
在印刷上
System.out.println("Current Date : " + d)
Run Code Online (Sandbox Code Playgroud)
它应该打印May 11 2010 - 00:00:00.
我有一个JODA DateTime 2012-12-31T13:32:56.483+13:00.我想将它转换为日期dd/MM/yy格式.所以我期待代码返回日期,如 - 2012年12月31日.
代码 -
// Input dateTime = 2012-12-31T13:32:56.483+13:00
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/MM/yy");
Date date = simpleDateFormat.parse(dateTime.toString("dd/MM/yy"));
Run Code Online (Sandbox Code Playgroud)
结果:
Output - Mon Dec 31 00:00:00 NZDT 2012
Expected Output - 31/12/12
Run Code Online (Sandbox Code Playgroud)
当我执行以下操作时,我得到了预期的输出,但我不知道如何将其转换为Date-
String string = simpleDateFormat.format(date);
Run Code Online (Sandbox Code Playgroud)
请帮我.
谢谢
编辑 - 我希望我的最终结果是以dd/MM/yy格式的Util Date.我不想要String输出.我的输入是Joda DateTime yyyy-MM-ddThh:mm:ss:+ GMT.我需要将JodaDateTime转换为UtilDate.
我想创建一个没有TimeZone的Date对象(例如:) 2007-06-21.这可能吗?
当我使用以下方法打印时Thu Jun 21 00:00:00 GMT 2007
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
TimeZone timeZone = TimeZone.getTimeZone("GMT");
timeZone.setDefault(timeZone);
sdf.setTimeZone(timeZone);
Date pickUpDate = sdf.parse("2007-06-21");
System.out.println(pickUpDate);
Run Code Online (Sandbox Code Playgroud) 我想实现的是一个日期转换格式yyyyMMdd,以本地格式,即yyyy/MM/dd或dd/MM/yyyy等.我不感兴趣的部分时间,我只是需要时间.
该函数将采用字符串日期并以区域设置格式返回字符串日期.
我现在拥有的是:
dateFormat = new SimpleDateFormat("yyyyMMdd", Locale.getDefault());
convertedDate = dateFormat.parse("20120521");
Run Code Online (Sandbox Code Playgroud)
我之后尝试的所有东西要么返回一个带有时间和GMT等的长字符串,要么是我传递给函数的相同字符串.