SimpleDateFormat format = new SimpleDateFormat(pattern);获取的是当前设备的默认时区(如北京时间东八区),
而format.parse(strTime).getTime();获取strTime的long时间,会把strTime当做是东八区再转化为世界时间(UTC)再计算出毫秒数。
如:pattern为:HH:mm格式,strTime:01:06。
而世界时间(UTC)的1970-01-01 00:00:00的毫秒数为0,此时将01:06默认补上1970-01-01即1970-01-01 01:06视为东八区时间,再转
UTC时间变成1969-12-31 17:06来计算,则得出的结果是负数。
解决方法:
/**
* 根据世界时间的毫秒数转化为pattern格式的String时间
* @param pattern
* @param utcTimeMillis 世界时间的毫秒数
* @return
*/
public static String formatByUTCTimeMillis(String pattern,long utcTimeMillis)
{
if (!StringUtil.isEmpty(pattern))
{
try
{
Date d = new Date(utcTimeMillis);
SimpleDateFormat format = new SimpleDateFormat(pattern);
format.setTimeZone(TimeZone.getTimeZone("UTC"));
return format.format(d);
} catch (Exception e)
{
String msg = "formatByUTCTimeMillis(pattern:" + pattern + ",longTime:" + utcTimeMillis + ")";
Logger.e2s(new Exception(msg,e));
}
}
return null;
}
/**
* 根据世界时间的String时间转化为世界时间的毫秒数时间
* @param pattern strTime的日期格式
* @param utcStrTime 世界时间的pattern格式String时间
* @return
*/
public static long formatByUTCStrTime(String pattern,String utcStrTime)
{
if(!StringUtil.isEmpty(pattern) && !StringUtil.isEmpty(utcStrTime))
{
try
{
SimpleDateFormat format = new SimpleDateFormat(pattern);
format.setTimeZone(TimeZone.getTimeZone("UTC"));
return format.parse(utcStrTime).getTime();
} catch (Exception e)
{
String msg = "formatByUTCStrTime(pattern:"+pattern+",strTime:"+utcStrTime+")";
Logger.e2s(new Exception(msg,e));
}
}
return 0;
}
分享到:
相关推荐
日期转long的转换涉及到将日期对象转换为对应的时间戳。在Java中,可以使用`Date`类的`getTime()`方法来实现这一转换。例如: ```java Date date = new Date(); // 创建当前日期对象 long timestamp = date.getTime...
这个“一个long型与Date型时间转换工具”正是为了简化这类操作而设计的。Long类型在Java中通常用来存储时间戳,即从1970年1月1日(UTC)开始到现在的毫秒数。Date对象则用于表示特定的瞬间,精确到毫秒。转换工具的...
"时间long型和现实时间转换"这个话题是Java开发者经常遇到的问题,它涉及到将long型时间戳与人类可读的日期时间格式之间进行转换。在本文中,我们将深入探讨这个主题,并提供详细的解决方案。 首先,我们要理解什么...
- **Date转Long**:要将Date对象转换为long类型,可以调用Date对象的`getTime()`方法。例如:`long timestamp = myDate.getTime();` - **Long转Date**:相反,如果有一个long类型的毫秒值,想要创建一个Date对象,...
然而,当你需要将这个long类型的时间戳转换为int类型时,可能会遇到数据溢出的问题,因为int类型的存储空间只有32位(4个字节),而long类型则有64位(8个字节)。 当long类型的时间戳转换为int类型时,如果long值...
"时间转换工具long和String的转换"指的是将表示时间戳的long类型数值转换为格式化的日期字符串(如"yyyy-MM-dd HH:mm:ss"),反之亦然。这种转换在日志记录、数据存储和用户界面显示等方面都有广泛的应用。 首先,...
Android/java的long类型时间戳,转换成时间格式的工具类
Adnroid long类型时间戳时间转换-常用/中间带英文等
总的来说,`TimeUtil_java-long型与Date型时间转换工具`这个压缩包很可能包含了一个方便的工具类,用于在`long`类型和`Date`类型之间进行转换,并提供了日期相关的辅助方法。在实际开发中,这样的工具类可以极大地...
在Java开发中,日期时间的处理是一个常见且重要的功能...以上就是对Java日期时间Date类型、long类型、String类型表现形式转换的详细解析。掌握了这些基本的转换方法,就能在Java项目中更加灵活高效地处理日期时间数据。
长整型时间excel转换换为年月日时分秒
长整型时间转换工具就是为了解决这类时间数据的处理问题而设计的。 首先,我们来理解什么是长整型时间。在计算机科学中,长整型通常用来表示大范围的整数,其位数比普通整型要多,因此能存储更大的数值。在处理时间...
日期转换,long类型时间转换成string类型
在探讨“int类型转换时间”的过程中,我们主要关注如何将整型(int)表示的时间值转换为标准的时间格式字符串,如“HH:mm:ss”。这一过程在许多应用程序中都非常常见,尤其是在处理时间戳或需要以人类可读格式显示时间...
本文将详细介绍易语言中长整数与日期时间转换的相关知识点。 首先,我们要理解易语言中的“长整数”类型。长整数(LongInteger)是易语言内置的基本数据类型之一,它可以存储非常大的整数值,通常用于表示距离某个...
- 相反的过程是将日期时间转换为长整数。这通常需要创建一个包含日期和时间信息的系统时间结构体,然后调用`SystemTimeToFileTime`函数,将这个结构体转换为长整数。 6. **源码示例** - 源码通常会包含易语言的...
// 将当前时间转换为文件时间 long fileTime = dt.ToFileTime(); Console.WriteLine(fileTime.ToString()); // 转换为本地时间 Console.WriteLine(dt.ToLocalTime().ToString()); // 获取年份 Console.WriteLine...
### Java时间转换大全 在Java开发中,时间与日期的操作是一项非常常见的需求。尤其是在处理数据库交互、日志记录以及各种业务逻辑中,正确且高效地处理时间格式转换至关重要。本文将详细介绍Java中常用的时间和日期...
第二种实现方法是将 GMT 日期转换成 long 型毫秒数,然后再进一步的转换成普通的 Date 时间格式。首先,使用 SimpleDateFormat 解析 GMT 时间格式字符串,获取 Date 对象。然后,使用 getTime 方法获取 Date 对象的...
参数time为time类型,n为long类型,表示时间偏移量。如果n为正数,则返回time之后n小时的时间;如果n为负数,则返回time之前n小时的时间。如果任一参数为NULL,函数返回NULL。 #### Second()函数 Second()函数返回...