Java类库有一个名为DateTime的类.DateTime有这个方法:
int daysBetween(DateTime other)
Run Code Online (Sandbox Code Playgroud)
返回此参数与参数之间的天数.它没有方法
int secondsBetween(DateTime other)
Run Code Online (Sandbox Code Playgroud)
我碰巧需要它.是否有一个类似于DateTime的类但有这样的方法?
我想将此GMT时间戳转换为GMT + 13:
2011-10-06 03:35:05
Run Code Online (Sandbox Code Playgroud)
我尝试过大约100种不同的DateFormat,TimeZone,Date,GregorianCalendar等组合来尝试做这个非常基本的任务.
这段代码完成了我对CURRENT TIME的要求:
Calendar calendar = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
DateFormat formatter = new SimpleDateFormat("dd MMM yyyy HH:mm:ss z");
formatter.setTimeZone(TimeZone.getTimeZone("GMT+13"));
String newZealandTime = formatter.format(calendar.getTime());
Run Code Online (Sandbox Code Playgroud)
但我想要的是设定时间而不是使用当前时间.
我发现任何时候我都尝试设置这样的时间:
calendar.setTime(new Date(1317816735000L));
Run Code Online (Sandbox Code Playgroud)
使用本地机器的TimeZone.这是为什么?我知道当"new Date()"返回UTC + 0时,为什么当你设置Time以毫秒为单位时,它不再假设时间是UTC?
有可能:
在此先感谢您的帮助:D
我有这段代码:
DateFormat formatter1;
formatter1 = new SimpleDateFormat("mm/DD/yyyy");
System.out.println((Date)formatter1.parse("08/16/2011"));
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我将其作为输出:
Sun Jan 16 00:10:00 IST 2011
Run Code Online (Sandbox Code Playgroud)
我期望:
Tue Aug 16 "Whatever Time" IST 2011
Run Code Online (Sandbox Code Playgroud)
我的意思是说我没有达到预期的月份.这是什么错误?
我有以下格式的日期: 2010-03-01T00:00:00-08:00
我在它上面抛出了以下SimpleDateFormats来解析它:
private static final SimpleDateFormat[] FORMATS = {
new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"), //ISO8601 long RFC822 zone
new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssz"), //ISO8601 long long form zone
new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"), //ignore timezone
new SimpleDateFormat("yyyyMMddHHmmssZ"), //ISO8601 short
new SimpleDateFormat("yyyyMMddHHmm"),
new SimpleDateFormat("yyyyMMdd"), //birthdate from NIST IHE C32 sample
new SimpleDateFormat("yyyyMM"),
new SimpleDateFormat("yyyy") //just the year
};
Run Code Online (Sandbox Code Playgroud)
我有一个方便的方法,使用这样的格式:
public static Date figureOutTheDamnDate(String wtf) {
if (wtf == null) {
return null;
}
Date retval = null;
for (SimpleDateFormat sdf : FORMATS) {
try {
sdf.setLenient(false)
retval = sdf.parse(wtf); …Run Code Online (Sandbox Code Playgroud) 如何在Unix中将分钟从unix时间戳转换为日期和时间.例如,时间戳1372339860对应于Thu, 27 Jun 2013 13:31:00 GMT.
我想转换1372339860为2013-06-27 13:31:00 GMT.
编辑:其实我希望它是根据美国时间GMT-4,所以它会2013-06-27 09:31:00.
我正在尝试编写一种方法来打印两个ZonedDateTime之间的时差,关于时区之间的差异.
我找到了一些解决方案,但所有这些解决方案都是用LocalDateTime编写的.
我需要在java中将分钟转换为小时和分钟.例如260应该是4:20.任何人都可以帮助我如何转换它.
这段代码始终将日期解析为当前时区,而不是解析为正在解析的字符串中的时区.
final DateTimeFormatter df = DateTimeFormat
.forPattern("EEE MMM dd HH:mm:ss 'GMT'Z yyyy");
final DateTime dateTime = df
.parseDateTime("Mon Aug 24 12:36:46 GMT+1000 2009");
System.out.println("dateTime = " + dateTime);
// outputs dateTime = 2009-08-24T04:36:46.000+02:00
Run Code Online (Sandbox Code Playgroud)
它输出:
dateTime = 2009-08-24T04:36:46.000+02:00
Run Code Online (Sandbox Code Playgroud)
而我期望:
dateTime = 2009-08-24T04:36:46.000+10:00
Run Code Online (Sandbox Code Playgroud)
我有什么想法我做错了吗?
我试图确定从某个日期开始的年龄.有没有人知道在Android中这样做的干净方法?我显然有Java api可用,但直接的java api非常弱,我希望Android有一些东西可以帮助我.
编辑:在Android中使用Joda时间的多个建议让我有点担心Android Java - Joda Date很慢且相关问题.此外,拉入一个未随平台一起提供的库,这个尺寸可能太大了.
码:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss z");
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println(new Date());
try {
String d = sdf.format(new Date());
System.out.println(d);
System.out.println(sdf.parse(d));
} catch (Exception e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
Run Code Online (Sandbox Code Playgroud)
输出:
Thu Aug 08 17:26:32 GMT+08:00 2013
2013.08.08 09:26:32 GMT
Thu Aug 08 17:26:32 GMT+08:00 2013
Run Code Online (Sandbox Code Playgroud)
请注意,format()格式Date正确格式为GMT,但parse()丢失了GMT详细信息.我知道我可以使用substring()并解决这个问题,但这种现象背后的原因是什么?
这是一个重复的问题,没有任何答案.
编辑:让我以另一种方式提出问题,检索Date对象的方式是什么,以便它始终在GMT中?