热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Android日期时间与时区使用总结汇总

Android中关于日期时间与时区的使用总结2017年03月22日11:11:23微信号lanjixingxun阅读数:5356关于Android实际开放中&#x

Android中关于日期时间与时区的使用总结

2017年03月22日 11:11:23 微信号 lanjixingxun 阅读数:5356

关于Android 实际开放中,涉及时间转换问题,还是很有必要详细知晓一下,具体的先参考这篇文章,然后被我无耻的拷贝过来,具体更详细和深入的,有时间详细的啰嗦一下,原文地址:http://www.cnblogs.com/endure/p/3485281.html

在开发Android的过程中,出现过几次由于日期时间导致的问题,而且主要是由于时区的原因导致,所以一直想总结一下,形成一个良好的开发规范。

一、Unix时间戳

  Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方法,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。Unix时间戳不仅被使用在Unix系统、类Unix系统中,也在许多其他操作系统中被广泛采用。

二、关于时间标准和时区

  1、原子时:International Atomic Time (IAT)

    又称国际原子时,是一种通过原子钟得到的时间标准,原子钟是世界上已知最准确的时间测量和频率标准,原子钟在 37 亿年的误差不超过 1 秒。

  2、世界时:Universal Time(UT)

    是一种以格林尼治子夜起算的平太阳时。世界时是以地球自转为基准得到的时间尺度,其精度受到地球自转不均匀变化和极移的影响,为了解决这种影响,1955年国际天文联合会定义了UT0、UT1和UT2三个系统,他们三者之间是递进的关系,后者都是发现前者的一些度量差别,通过修正得到更均匀的时标。

    在格林尼治子午线上的平太阳时称为世界时(UT0),又叫格林尼治平时(GMT)。格林尼治标准时间(旧译格林尼治平均时间或格林威治标准时间,英语:Greenwich Mean Time,GMT)是指位于英国伦敦郊区的皇家格林尼治天文台的标准时间,因为本初子午线被定义在通过那里的经线。自1924年2月5日开始,格林尼治天文台每隔一小时会向全世界发放调时信息。

  2、协调世界时:Coordinated Universal Time(UTC)

    又称世界标准时间、世界统一时间。是经过平均太阳时(以格林威治时间GMT为准)、地轴运动修正后的新时标以及以“秒”为单位的国际原子时所综合精算而成的时间,计算过程相当严谨精密,因此若以“世界标准时间”的角度来说,UTC比GMT更精准。其误差值必须保持在0.9秒以内,若大于0.9秒则由位于巴黎的国际地球自转事务中央局发布闰秒,使UTC与地球自转周期一致。

    基本上UTC的本质强调的是比GMT更精确的世界时间标准,UTC中多一个闰秒的调整,以确保协调世界时(UTC)与格林尼治平时(GMT)相差不会超过0.9秒,并在有需要的时候在协调世界时(UTC)内加上正或负闰秒。

    UTC被应用在大多数的计算机以及网络标准中。

  3、夏令时与冬令时:Daylight Saving Time(DST)

    又称“日光节约时制”和“夏令时间”,是一种为节约能源而人为规定地方时间的制度,在这一制度实行期间所采用的统一时间称为“夏令时间”。一般在天亮早的夏季人为将时间提前一小时,可以使人早起早睡,减少照明量,以充分利用光照资源,从而节约照明用电。各个采纳夏时制的国家具体规定不同。目前全世界有近110个国家每年要实行夏令时。自2011年3月27日开始俄罗斯永久使用夏令时,把时间拨快一小时,不再调回。

    简单来说,使用夏令时和冬令时即在夏季将时间拨快一个小时,等到冬季再将时间拨慢一个小时。

  4、CST

    CST同时代表澳大利亚、美国、中国、古巴四个国家的标准时间,时区分别为:

     澳洲中部时间,Central Standard Time (Australia) UT+9:30
     中部标准时区(北美洲),Central Standard Time (North America) UT-6:00
     北京时间,China Standard Time UT+8:00
     古巴标准时间,Cuba Standard Time UT-4:00

  在开发时我们需要注意不同国家的时区,并且UTC和GMT在计算机系统中使用并无明显差别,可视为等同。

二、规范

  在实际开发中,当时间用于显示时,非特殊要求下一般使用系统默认的时区时间作为显示时间。将时间做为数据存储或传递给其他系统时(特别是跨平台调用),则最好使用标准的UTC/GMT时间(后面统称GMT),除非事先约定或标识了时间的类型。

三、在Android中需要特别注意的事项

  1、Android中表示日期时间的类型,有Date、Calendar,他们在没有显示设置其时区时,取到的当前时间均为系统默认时区的时间,即使给定一个时间,同样是按系统默认时区来换算时间,所以说他们都是与时区相关的。

  2、SimpleDateFormat对象本身也是跟时区相关。

    当使用parse将一个字符串格式的日期转换为Date对象,或者将一个Date对象转换为字符串日期时,这个字符串日期的时区以SimpleDateFormat关联的时区为准,如果通过setTimeZone修改了时区,则这个字符串日期以修改后的时区为准。例如:

// 2013-1-31 22:17:14
Date date = new Date(1359641834000L);
System.out.println(date);
String dateStr = "2013-1-31 22:17:14";
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
try
{// 对于已经设定为GMT时间标准的dateFormat来说,一切需要他转换的字符串日期都是GMT标准时间,转换后返回的Date由于默认遵守系统默认时区,所以转换给Date的日期需要+8(例如北京标准时区),也就是时区与标准不同导致的时差。Date dateTmp = dateFormat.parse(dateStr);System.out.println(dateTmp);
}
catch (ParseException e)
{e.printStackTrace();
}
// Date还是按系统默认时区,而format格式化处来的字符串是GMT,所以要-8。
String dateStrTmp = dateFormat.format(date);
System.out.println(dateStrTmp);
Date date = new Date(1359641834000L);
System.out.println(date);
String dateStr = "2013-1-31 22:17:14";
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
try
{// 对于已经设定为GMT时间标准的dateFormat来说,一切需要他转换的字符串日期都是GMT标准时间,转换后返回的Date由于默认遵守系统默认时区,所以转换给Date的日期需要+8(例如北京标准时区),也就是时区与标准不同导致的时差。Date dateTmp = dateFormat.parse(dateStr);System.out.println(dateTmp);
}
catch (ParseException e)
{e.printStackTrace();
}
// Date还是按系统默认时区,而format格式化处来的字符串是GMT,所以要-8。
String dateStrTmp = dateFormat.format(date);
System.out.println(dateStrTmp);

    输出结果为:image

  3、Calendar在不手动设置时区时,是与系统默认时区相关的。在手动修改时区后,不能使用calendar.getTime方法来直接获取Date日期,因为此时的日期与setTime时的值相同,想要正确获取修改时区后的时间,应该通过calendar的get方法。例如:

Date date = new Date(1359641834000L);
System.out.println(date);
Calendar calendar = Calendar.getInstance();
calendar.setTimeZone(TimeZone.getTimeZone("GMT"));
// 或者可以 Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
calendar.setTime(date);
System.out.println(calendar.get(Calendar.HOUR_OF_DAY) + ":" + calendar.get(Calendar.MINUTE));Calendar calendar2 = Calendar.getInstance();
calendar2.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE), calendar.get(Calendar.SECOND));System.out.println(calendar.getTime());
System.out.println(calendar2.getTime());
new Date(1359641834000L);
System.out.println(date);
Calendar calendar = Calendar.getInstance();
calendar.setTimeZone(TimeZone.getTimeZone("GMT"));
// 或者可以 Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
calendar.setTime(date);
System.out.println(calendar.get(Calendar.HOUR_OF_DAY) + ":" + calendar.get(Calendar.MINUTE));Calendar calendar2 = Calendar.getInstance();
calendar2.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH), calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE), calendar.get(Calendar.SECOND));System.out.println(calendar.getTime());
System.out.println(calendar2.getTime());

    输入结果为:image

  4、TimeZone

    在开发中,我们可以通过TimeZone对象获取关于系统默认时区及其相关的详细信息。

四、Android关于日期的工具类

/*** Copyright (C) 2011, BHJ* All rights reserved.* * 文件名称:* 文件标识:* 文件摘要:* * 当前版本:* 作 者:* 完成日期:2013-12-20* * 取代版本:* 修改时间:* 修 改 人:* 修改摘要:*/package com.bhj.timetest;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;/*** 日期工具类(未特别说明的均为系统默认时区下的时间)* */
public class DateUtil
{ /** 1s==1000ms */private final static int TIME_MILLISECONDS = 1000;/** 时间中的分、秒最大值均为60 */private final static int TIME_NUMBERS = 60;/** 时间中的小时最大值 */private final static int TIME_HOURSES = 24;/** 格式化日期的标准字符串 */private final static String FORMAT = "yyyy-MM-dd HH:mm:ss";/*** 获取时区信息* */public static TimeZone getTimeZone(){return TimeZone.getDefault();}/*** 将日期字符串转换为Date对象* @param date 日期字符串,必须为"yyyy-MM-dd HH:mm:ss"* @return 日期字符串的Date对象表达形式* */public static Date parseDate(String date){return parseDate(date, FORMAT);}/*** 将日期字符串转换为Date对象* @param date 日期字符串,必须为"yyyy-MM-dd HH:mm:ss"* @param format 格式化字符串* @return 日期字符串的Date对象表达形式* */public static Date parseDate(String date, String format){Date dt = null;SimpleDateFormat dateFormat = new SimpleDateFormat(format);try{dt = dateFormat.parse(date);}catch(ParseException e){e.printStackTrace();}return dt;}/*** 将Date对象转换为指定格式的字符串* @param date Date对象* @return Date对象的字符串表达形式"yyyy-MM-dd HH:mm:ss"* */public static String formatDate(Date date){return formatDate(date, FORMAT); }/*** 将Date对象转换为指定格式的字符串* @param date Date对象* @param String format 格式化字符串* @return Date对象的字符串表达形式* */public static String formatDate(Date date, String format){SimpleDateFormat dateFormat = new SimpleDateFormat(format); return dateFormat.format(date); }/*** 格式化日期* @param long unixTime unix时间戳* @return 日期字符串"yyyy-MM-dd HH:mm:ss"* */public static String formatUnixTime(long unixTime){ return formatUnixTime(unixTime, FORMAT);}/*** 格式化日期* @param long unixTime unix时间戳* @param String format 格式化字符串* @return 日期字符串* */public static String formatUnixTime(long unixTime, String format){SimpleDateFormat dateFormat = new SimpleDateFormat(format); return dateFormat.format(unixTime); }/*** 将GMT日期格式化为系统默认时区的日期字符串表达形式* @param gmtUnixTime GTM时间戳* @return 日期字符串"yyyy-MM-dd HH:mm:ss"* */public static String formatGMTUnixTime(long gmtUnixTime){return formatGMTUnixTime(gmtUnixTime, FORMAT); }/*** 将GMT日期格式化为系统默认时区的日期字符串表达形式* @param gmtUnixTime GTM时间戳* @param format 格式化字符串* @return 日期字符串"yyyy-MM-dd HH:mm:ss"* */public static String formatGMTUnixTime(long gmtUnixTime, String format){SimpleDateFormat dateFormat = new SimpleDateFormat(format);return dateFormat.format(gmtUnixTime + TimeZone.getDefault().getRawOffset()); }/*** 获取时间戳的Date表示形式* @param unixTime unix时间戳* @return Date对象* */public static Date getDate(long unixTime){ return new Date(unixTime); }/*** 获取GMT时间戳的Date表示形式(转换为Date表示形式后,为系统默认时区下的时间)* @param gmtUnixTime GMT Unix时间戳* @return Date对象* */public static Date getGMTDate(long gmtUnixTime){return new Date(gmtUnixTime + TimeZone.getDefault().getRawOffset()); }/*** 将系统默认时区的Unix时间戳转换为GMT Unix时间戳* @param unixTime unix时间戳* @return GMT Unix时间戳* */public static long getGMTUnixTime(long unixTime){return unixTime - TimeZone.getDefault().getRawOffset();}/*** 将GMT Unix时间戳转换为系统默认时区的Unix时间戳* @param gmtUnixTime GMT Unix时间戳* @return 系统默认时区的Unix时间戳* */public static long getCurrentTimeZoneUnixTime(long gmtUnixTime){return gmtUnixTime + TimeZone.getDefault().getRawOffset();}/*** 获取当前时间的GMT Unix时间戳* @return 当前的GMT Unix时间戳* */public static long getGMTUnixTimeByCalendar(){Calendar calendar = Calendar.getInstance();// 获取当前时区下日期时间对应的时间戳long unixTime = calendar.getTimeInMillis();// 获取标准格林尼治时间下日期时间对应的时间戳 long unixTimeGMT = unixTime - TimeZone.getDefault().getRawOffset();return unixTimeGMT;}/*** 获取当前时间的Unix时间戳* @return 当前的Unix时间戳* */public static long getUnixTimeByCalendar(){Calendar calendar = Calendar.getInstance();// 获取当前时区下日期时间对应的时间戳long unixTime = calendar.getTimeInMillis();return unixTime;}/** * 获取更改时区后的时间 * @param date 时间 * @param oldZone 旧时区 * @param newZone 新时区 * @return 时间*/ public static Date changeTimeZone(Date date, TimeZone oldZone, TimeZone newZone) { Date dateTmp = null;if (date != null){int timeOffset = oldZone.getRawOffset() - newZone.getRawOffset();dateTmp = new Date(date.getTime() - timeOffset);}return dateTmp;}/*** 将总秒数转换为时分秒表达形式* @param seconds 任意秒数* @return %s小时%s分%s秒*/public static String formatTime(long seconds){long hh = seconds / TIME_NUMBERS / TIME_NUMBERS;long mm = (seconds - hh * TIME_NUMBERS * TIME_NUMBERS) > 0 ? (seconds - hh * TIME_NUMBERS * TIME_NUMBERS) / TIME_NUMBERS : 0;long ss = seconds }
package com.bhj.timetest;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;/*** 日期工具类(未特别说明的均为系统默认时区下的时间)* */
public class DateUtil
{ /** 1s==1000ms */private final static int TIME_MILLISECONDS = 1000;/** 时间中的分、秒最大值均为60 */private final static int TIME_NUMBERS = 60;/** 时间中的小时最大值 */private final static int TIME_HOURSES = 24;/** 格式化日期的标准字符串 */private final static String FORMAT = "yyyy-MM-dd HH:mm:ss";/*** 获取时区信息* */public static TimeZone getTimeZone(){return TimeZone.getDefault();}/*** 将日期字符串转换为Date对象* @param date 日期字符串,必须为"yyyy-MM-dd HH:mm:ss"* @return 日期字符串的Date对象表达形式* */public static Date parseDate(String date){return parseDate(date, FORMAT);}/*** 将日期字符串转换为Date对象* @param date 日期字符串,必须为"yyyy-MM-dd HH:mm:ss"* @param format 格式化字符串* @return 日期字符串的Date对象表达形式* */public static Date parseDate(String date, String format){Date dt = null;SimpleDateFormat dateFormat = new SimpleDateFormat(format);try{dt = dateFormat.parse(date);}catch(ParseException e){e.printStackTrace();}return dt;}/*** 将Date对象转换为指定格式的字符串* @param date Date对象* @return Date对象的字符串表达形式"yyyy-MM-dd HH:mm:ss"* */public static String formatDate(Date date){return formatDate(date, FORMAT); }/*** 将Date对象转换为指定格式的字符串* @param date Date对象* @param String format 格式化字符串* @return Date对象的字符串表达形式* */public static String formatDate(Date date, String format){SimpleDateFormat dateFormat = new SimpleDateFormat(format); return dateFormat.format(date); }/*** 格式化日期* @param long unixTime unix时间戳* @return 日期字符串"yyyy-MM-dd HH:mm:ss"* */public static String formatUnixTime(long unixTime){ return formatUnixTime(unixTime, FORMAT);}/*** 格式化日期* @param long unixTime unix时间戳* @param String format 格式化字符串* @return 日期字符串* */public static String formatUnixTime(long unixTime, String format){SimpleDateFormat dateFormat = new SimpleDateFormat(format); return dateFormat.format(unixTime); }/*** 将GMT日期格式化为系统默认时区的日期字符串表达形式* @param gmtUnixTime GTM时间戳* @return 日期字符串"yyyy-MM-dd HH:mm:ss"* */public static String formatGMTUnixTime(long gmtUnixTime){return formatGMTUnixTime(gmtUnixTime, FORMAT); }/*** 将GMT日期格式化为系统默认时区的日期字符串表达形式* @param gmtUnixTime GTM时间戳* @param format 格式化字符串* @return 日期字符串"yyyy-MM-dd HH:mm:ss"* */public static String formatGMTUnixTime(long gmtUnixTime, String format){SimpleDateFormat dateFormat = new SimpleDateFormat(format);return dateFormat.format(gmtUnixTime + TimeZone.getDefault().getRawOffset()); }/*** 获取时间戳的Date表示形式* @param unixTime unix时间戳* @return Date对象* */public static Date getDate(long unixTime){ return new Date(unixTime); }/*** 获取GMT时间戳的Date表示形式(转换为Date表示形式后,为系统默认时区下的时间)* @param gmtUnixTime GMT Unix时间戳* @return Date对象* */public static Date getGMTDate(long gmtUnixTime){return new Date(gmtUnixTime + TimeZone.getDefault().getRawOffset()); }/*** 将系统默认时区的Unix时间戳转换为GMT Unix时间戳* @param unixTime unix时间戳* @return GMT Unix时间戳* */public static long getGMTUnixTime(long unixTime){return unixTime - TimeZone.getDefault().getRawOffset();}/*** 将GMT Unix时间戳转换为系统默认时区的Unix时间戳* @param gmtUnixTime GMT Unix时间戳* @return 系统默认时区的Unix时间戳* */public static long getCurrentTimeZoneUnixTime(long gmtUnixTime){return gmtUnixTime + TimeZone.getDefault().getRawOffset();}/*** 获取当前时间的GMT Unix时间戳* @return 当前的GMT Unix时间戳* */public static long getGMTUnixTimeByCalendar(){Calendar calendar = Calendar.getInstance();// 获取当前时区下日期时间对应的时间戳long unixTime = calendar.getTimeInMillis();// 获取标准格林尼治时间下日期时间对应的时间戳 long unixTimeGMT = unixTime - TimeZone.getDefault().getRawOffset();return unixTimeGMT;}/*** 获取当前时间的Unix时间戳* @return 当前的Unix时间戳* */public static long getUnixTimeByCalendar(){Calendar calendar = Calendar.getInstance();// 获取当前时区下日期时间对应的时间戳long unixTime = calendar.getTimeInMillis();return unixTime;}/** * 获取更改时区后的时间 * @param date 时间 * @param oldZone 旧时区 * @param newZone 新时区 * @return 时间*/ public static Date changeTimeZone(Date date, TimeZone oldZone, TimeZone newZone) { Date dateTmp = null;if (date != null){int timeOffset = oldZone.getRawOffset() - newZone.getRawOffset();dateTmp = new Date(date.getTime() - timeOffset);}return dateTmp;}/*** 将总秒数转换为时分秒表达形式* @param seconds 任意秒数* @return %s小时%s分%s秒*/public static String formatTime(long seconds){long hh = seconds / TIME_NUMBERS / TIME_NUMBERS;long mm = (seconds - hh * TIME_NUMBERS * TIME_NUMBERS) > 0 ? (seconds - hh * TIME_NUMBERS * TIME_NUMBERS) / TIME_NUMBERS : 0;long ss = seconds }

################################################################################################


Android(安卓)时间戳和日期之间的转化

作者: android 发布时间: 2017-06-23 浏览: 1338 次

注:转发请注明原地址:https://www.niwoxuexi.com/blog/android/article/170...

在Android开发过程中,经常会遇到日期的各种格式转换,主要使用SimpleDateFormat这个类来实现,掌握了这个类,可以转换任何你想要的各种格式。

常见的日期格式:

1,日期格式:String dateString = "2017-06-20 10:30:30" 对应的格式:String pattern = "yyyy-MM-dd HH:mm:ss";

2,日期格式:String dateString = "2017-06-20" 对应的格式:String pattern = "yyyy-MM-dd";

3,日期格式:String dateString = "2017年06月20日 10时30分30秒 对应的格式:String pattern = "yyyy年MM月dd日 HH时mm分ss秒";

 

4,日期格式:String dateString = "2017年06月20日" 对应的格式:String pattern = "yyyy年MM月dd日";

下面是几种情况(其中pattern 根据上面的选择,如果需要其他的格式,自己去网上查吧)

一、获取系统时间戳

public long getCurTimeLong(){long time=System.currentTimeMillis();return time;
}

二、获取当前时间

public static String getCurDate(String pattern){SimpleDateFormat sDateFormat = new SimpleDateFormat(pattern);return sDateFormat.format(new java.util.Date());
}

三、时间戳转换成字符窜

public static String getDateToString(long milSecond, String pattern) {Date date = new Date(milSecond);SimpleDateFormat format = new SimpleDateFormat(pattern);return format.format(date);
}

四、将字符串转为时间戳

public static long getStringToDate(String dateString, String pattern) {SimpleDateFormat dateFormat = new SimpleDateFormat(pattern);Date date = new Date();try{date = dateFormat.parse(dateString);} catch(ParseException e) {// TODO Auto-generated catch blocke.printStackTrace();}return date.getTime();
}

 

 

好了,Android的时间转化就写到这儿了,最好贴上工具类代码:

package com.niwoxuexi.testdemo;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;/*** Created by niwoxuexi.com on 2017/6/23.*/public class DateUtil {/*** 获取系统时间戳* @return*/public long getCurTimeLong(){long time=System.currentTimeMillis();return time;}/*** 获取当前时间* @param pattern* @return*/public static String getCurDate(String pattern){SimpleDateFormat sDateFormat = new SimpleDateFormat(pattern);return sDateFormat.format(new java.util.Date());}/*** 时间戳转换成字符窜* @param milSecond* @param pattern* @return*/public static String getDateToString(long milSecond, String pattern) {Date date = new Date(milSecond);SimpleDateFormat format = new SimpleDateFormat(pattern);return format.format(date);}/*** 将字符串转为时间戳* @param dateString* @param pattern* @return*/public static long getStringToDate(String dateString, String pattern) {SimpleDateFormat dateFormat = new SimpleDateFormat(pattern);Date date = new Date();try{date = dateFormat.parse(dateString);} catch(ParseException e) {// TODO Auto-generated catch blocke.printStackTrace();}return date.getTime();}
}

 


推荐阅读
  • 本文分析了Wince程序内存和存储内存的分布及作用。Wince内存包括系统内存、对象存储和程序内存,其中系统内存占用了一部分SDRAM,而剩下的30M为程序内存和存储内存。对象存储是嵌入式wince操作系统中的一个新概念,常用于消费电子设备中。此外,文章还介绍了主电源和后备电池在操作系统中的作用。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 本文讨论了Kotlin中扩展函数的一些惯用用法以及其合理性。作者认为在某些情况下,定义扩展函数没有意义,但官方的编码约定支持这种方式。文章还介绍了在类之外定义扩展函数的具体用法,并讨论了避免使用扩展函数的边缘情况。作者提出了对于扩展函数的合理性的质疑,并给出了自己的反驳。最后,文章强调了在编写Kotlin代码时可以自由地使用扩展函数的重要性。 ... [详细]
  • 本文介绍了如何使用Express App提供静态文件,同时提到了一些不需要使用的文件,如package.json和/.ssh/known_hosts,并解释了为什么app.get('*')无法捕获所有请求以及为什么app.use(express.static(__dirname))可能会提供不需要的文件。 ... [详细]
  • Android系统源码分析Zygote和SystemServer启动过程详解
    本文详细解析了Android系统源码中Zygote和SystemServer的启动过程。首先介绍了系统framework层启动的内容,帮助理解四大组件的启动和管理过程。接着介绍了AMS、PMS等系统服务的作用和调用方式。然后详细分析了Zygote的启动过程,解释了Zygote在Android启动过程中的决定作用。最后通过时序图展示了整个过程。 ... [详细]
  • 本文介绍了在MFC下利用C++和MFC的特性动态创建窗口的方法,包括继承现有的MFC类并加以改造、插入工具栏和状态栏对象的声明等。同时还提到了窗口销毁的处理方法。本文详细介绍了实现方法并给出了相关注意事项。 ... [详细]
  • 上图是InnoDB存储引擎的结构。1、缓冲池InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。因此可以看作是基于磁盘的数据库系统。在数据库系统中,由于CPU速度 ... [详细]
  • 本文详细介绍了GetModuleFileName函数的用法,该函数可以用于获取当前模块所在的路径,方便进行文件操作和读取配置信息。文章通过示例代码和详细的解释,帮助读者理解和使用该函数。同时,还提供了相关的API函数声明和说明。 ... [详细]
author-avatar
xiaomanni521125655
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有