使用gradle打包多个变体(variant)

使用gradle打包多个变体(variant)
使用gradle打包多个变体(variant)

使用gradle打包多个变体(variant)

使用gradle打包多个变体(variant)

1 配置不同变体的属性(签名、applicationId)

2 新建不同变体的sourceSet

3 AndroidManifest占位符

4 调试不同版本

背景:刚刚接手的项目中包含3个客户端app(两个eclipse工程、一个AS工程),同时这个项目根据不同用户的制定还有两个衍生版本。原来的开发人员将项目复制后修改,在我接手时一共存在着9个工程文件。

当我看到这个项目的时候近乎崩溃,因为这意味着每修改一个端的内容还要记着同步到其他的两个端中。查看后发现,衍生版本中大量的文件是重复的,只是部分比如资源文件、后台接口地址等是不同的。我便开始思考,如何通过一个Android Studio工程同时实现修改这三个版本。

于是便想到了曾看过stormzhang写过的ANDROID STUDIO系列教程六--GRADLE多渠道打包,这篇文章中简单描述了如何使用gradle进行多渠道打包(使用占位符替换AndroidManifest文件中友盟统计的UMENG_CHANNEL的值)。

这给了我一定的思路,通过查阅资料,确定了可以使用gradle打包出不同变体(不同applicationId、不同资源文件、不同APP名称与图标、不同Java文件)。

长篇讲解可以查看文章末尾的参考阅读,本文只介绍如何实现。

1 配置不同变体的属性(签名、applicationId)

由于项目中每个客户端都相当于存在三个版本,使用不同的签名文件,因此需要首先实现的就是对不同的变体配置不同的签名!

如上图所示,选择app module,选择Signing选项卡,首先配置好了这三个变体版本的签名文件。

在Flavors选项卡中,新建我们的变体(variant),并对变体进行配置!所有的Flavor都会复写defaultConfig中的属性,所以可以看到我并没有填写其中的一些属性。在这里还可以对不同的变体设置不同的applicationId(重要!这与极光推送等第三方SDK有关)。

创建完毕后同步项目,会发现app moudle下的build.gradle文件内容也发生了变化,如下图所示:

如果你可以熟练的使用gradle也可以选择不使用AS提供的UI界面,直接编写gradle文件。

2 新建不同变体的sourceSet

在修改完变体的配置文件后,我们还需要再项目的src文件夹下新建以我们的Flavor名称命名的文件夹,并在这些文件夹下新建如main中相同的目录结构。

我们正常编写项目都是写在main这个sourceSet下的,但是如果我们的项目的变体有不同的资源文件、Java文件时,我们就需要使用不同的sourceSet来区别开。

需要注意的是,如果是资源文件,Flavor下的资源文件会与main中的合并,如果存在重复,则Flavor中优先级高于main中。我们可以将不同变体中共用的资源存放在main中,只将不同的内容存放在flavor的sourceSet中。

如果不同变体有内容不同的Java文件则需要注意,main中不可以有这个Java文件,如果main中也存在此文件,编译时会提示文件重复。同时这个Java文件在flavor中要按照main中的包结构保存。

3 AndroidManifest占位符

由于不同的项目有不同的名称、图标,这一点我们可以通过类似上一步的方法,在不同的sourceSet中配置string.xml中的app_name属性,与drawable 文件夹中的ic_launcher。但是这样有些麻烦,当我们的变体版本多了得手就需要不断的重复这一动作,所以我使用的是在AndroidManifest文件中使用占位符然后在flavor中直接配置的方法。这样做的好处是,如果以后图标变更只需要到main中找到该文件然后替换即可,而不用去一个个找sourceSet。

首先将所有图标文件放到main中,然后在 AndroidManifest中使用¥{NAME}格式的占位符,最后在flavor中使用manifestPlaceholders =

[NAME1:VALUE1,NAME2:VALUE2]替换占位符中的内容。

在项目中,每个衍生版本都有自己的极光推送APPKEY属性,这也可以是用占位符这一方法来处理,最终的flavors如下图所示:

4 调试不同版本

现在我们拥有了三个不同的变体,但是我们调试的时候如何选择对应的程序来调试呢?

方式一:

方式二:

可以看到我们一共有6个可选变体,这是怎么回事呢?我们明明只设置了3个flavor。

这时就需要介绍buildTypes了,再次回到项目配置页面如下图所示:

可以看到有两个build type,这其中可以配置构建的一些选项,这里就不做过多介绍了。

我们的总变体数量等于 (build type数量)*(flavor数量),这就是为什么一共有六个可选的variant。最后献上一个release的buildType配置

1. release {

2. minifyEnabled true

3. shrinkResources true //移除无用资源

4. debuggable false

5. zipAlignEnabled true //Zipalign优化

6. proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

7. signingConfig signingConfigs.uerbT

8. // 自定义输出配置

9. applicationVariants.all { variant ->

10. variant.outputs.each { output ->

11. def outputFile = output.outputFile

12. if (outputFile != null && https://www.360docs.net/doc/fd17171272.html,.endsWith('.apk')) {

13. // 输出apk名称为UerbT_v1.0_2016-12-01_uerbt.apk

14. def fileName = "UerbT_v${variant.versionName}_${releaseTime()}_${variant.flavorName}.apk"

15. output.outputFile = new File(outputFile.parent, fileName)

16. }

17. }

18. //过滤掉unaligned的包

19. variant.assemble.doLast {

20. variant.outputs.each { output ->

21. println "-----------------------------------------"

22. println "aligned " + output.outputFile

23. println "unaligned " + output.packageApplication.outputFile

24. File unaligned = output.packageApplication.outputFile;

25. File aligned = output.outputFile

26. if (!unaligned.getName().equalsIgnoreCase(aligned.getName())) {

27. println "deleting " + unaligned.getName()

28. unaligned.delete()

29. }

30. }

31. }

32. }

33. }

releaseTime() 函数如下:

1. def releaseTime() {

2. return new Date().format("yyyy-MM-dd", TimeZone.getTimeZone("UTC"))

3. }

参考阅读:

重要-Gradle for Android 第四篇( 构建变体 )

重要 - 使用gradle构建不同特性的app

gradle配置详解

知乎问答-如何使用gradle构建不同的app

android studio gradle 多版本多apk打包

使用Gradle自动化构建多类型apk包

外包采用Gradle生成多套app打包

ANDROID STUDIO系列教程六--GRADLE多渠道打包

Android Studio中Gradle使用详解

Oracle 获取系统日期,日期转换函数

Oracle 获取系统日期,日期转换函数 learning oracle 获取系统日期和日期转换函数应用获取系统日期:SYSDA TE() 格式化日期:TO_CHAR(SYSDATE(),'YY/MM/DD HH24:MI:SS) 或TO_DATE(SYSDA TE(),'YY/MM/DD HH24:MI:SS) 格式化数字:TO_NUMBER 注:TO_CHAR 把日期或数字转换为字符串 TO_CHAR(number, '格式') TO_CHAR(salary, '$99,999.99') TO_CHAR(date, '格式') TO_DATE 把字符串转换为数据库中的日期类型 TO_DATE(char, '格式') TO_NUMBER 将字符串转换为数字 TO_NUMBER(char, '格式') 返回系统日期,输出25-12月-09 select sysdate from dual; mi是分钟,输出2009-12-25 14:23:31 select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual; mm会显示月份,输出2009-12-25 14:12:31 select to_char(sysdate,'yyyy-MM-dd HH24:mm:ss') from dual; 输出09-12-25 14:23:31 select to_char(sysdate,'yy-mm-dd hh24:mi:ss') from dual 输出2009-12-25 14:23:31 select to_date('2009-12-25 14:23:31','yyyy-mm-dd,hh24:mi:ss') from dual 而如果把上式写作: select to_date('2009-12-25 14:23:31','yyyy-mm-dd,hh:mi:ss') from dual 则会报错,因为小时hh是12进制,14为非法输入,不能匹配。 输出$10,000,00 : select to_char(1000000,'$99,999,99') from dual; 输出RMB10,000,00 : select to_char(1000000,'L99,999,99') from dual; 输出1000000.12 : select trunc(to_number('1000000.123'),2) from dual; select to_number('1000000.123') from dual; 转换的格式: 表示year 的:y 表示年的最后一位、 yy 表示年的最后2位、 yyy 表示年的最后3位、 yyyy 用4位数表示年 表示month的:mm 用2位数字表示月、 mon 用简写形式,比如11月或者nov 、 month 用全称,比如11月或者november 表示day的:dd 表示当月第几天、 ddd 表示当年第几天、

C获取系统时间及时间格式

1、新建一个windows form 窗体应用程序。 2、在该窗体加载时,输入如下代码 [csharp] view plaincopy Thread P_thread = new Thread( () => //lambda表达式(参数列表)=>{执行语句} lambda表达式是比匿名方法更加简洁的一种匿名函数语法 { while (true) {//public Object Invoke (Delegate method)在(拥有此控件的基础窗口句柄的)线程上执行指定的委托。 //关于为何使用invoke方法,参见C#中跨线程调用控件的线程安全性方法一文 this.Invoke( (MethodInvoker)delegate()//methodinvoke 表示一个委托,该委托可执行托管代码中声明为void 且不接受任何参数的任何方法。 //在对控件的Invoke 方法进行调用时或需要一个简单委托又不想自己定义时可以使用该委托。 { this.Refresh(); Graphics P_Graphics = CreateGraphics(); // Control.CreateGraphics方法,为控件创建Graphics。 //public Graphics CreateGraphics () 返回值为控件的Graphics。Graphics 类提供将对象绘制到显示设备的方法 //public void DrawString( // string s, // Font font, // Brush brush, // PointF point //)在指定位置point并且用指定的Brush 和Font 对象绘制指定的文本字符串s。 P_Graphics.DrawString("系统时间:" + DateTime.Now.ToString("yyyy年MM月dd日HH时mm分ss秒"), new Font("宋体", 15), Brushes.Blue, new Point(10, 10)); });//this.invoke Thread.Sleep(1000); }//while

JAVA中获取当前时间

Java中获得当前时间的方法 2008年06月16日星期一下午 10:06 有两种方法: 方法一:用java.util.Date类来实现,并结合java.text.DateFormat类来实现时间的格式化,看下面代码: import java.util.*; import java.text.*; //以下默认时间日期显示方式都是汉语语言方式 //一般语言就默认汉语就可以了,时间日期的格式默认为MEDIUM风格,比如:2008-6-16 20:54:53 //以下显示的日期时间都是再Date类的基础上的来的,还可以利用Calendar类来实现见类TestDate2.java public class TestDate { public static void main(String[] args) { Date now = new Date(); Calendar cal = Calendar.getInstance(); DateFormat d1 = DateFormat.getDateInstance(); //默认语言(汉语)下的默认风格(MEDIUM风格,比如:2008-6-16 20:54:53) String str1 = d1.format(now); DateFormat d2 = DateFormat.getDateTimeInstance(); String str2 = d2.format(now); DateFormat d3 = DateFormat.getTimeInstance(); String str3 = d3.format(now); DateFormat d4 = DateFormat.getInstance(); //使用SHORT风格显示日期和时间 String str4 = d4.format(now); DateFormat d5 = DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.FULL); //显示日期,周,时间(精确到秒) String str5 = d5.format(now); DateFormat d6 = DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG); //显示日期。时间(精确到秒) String str6 = d6.format(now); DateFormat d7 = DateFormat.getDateTimeInstance(DateFormat.SHORT,DateFormat.SHORT); //显示日期,时间(精确到分) String str7 = d7.format(now); DateFormat d8 = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.MEDIUM);

wincc系统日期时间获取

wincc系统日期时间获取 系统时间的获得,有两种办法,一是建立TAG,二是使用函数获取系统时间 方法一: 在[Tag Management]添加新的驱动"System Info.chn",然后在新添加的[SYSTEM INFO]新建连接,这样就可以创建实际TAG了; 下面新建几个TAG: 名字:date, 数据类型:text tag 8-bit character set,地址设定为Function:date,format:"MM-DD-YYYY" 名字:time, 数据类型:text tag 8-bit character set,地址设定为Function:Time,format:"HH:MM:SS" 根据上面的方法依次建立year,mon,day,week等TAG,请分别设置对应的format内容 TAG建立完成了,就可以读到系统时间了。新建一个图形文件,分别放置几个静态文本框[static text],把TEXT属性连接到上面新建的TAG,就可以显示系统日期时间,利用WEEK还能显示今天是星期几了. 方法二: 使用 C脚本获得系统时间 #include "apdefap.h" char* _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) { time_t timer;

struct tm *ptm; char *p; time(&timer); ptm=localtime(&timer); p=SysMalloc(9); sprintf(p,"%04d:%02d:%02d",ptm->tm_year+1900,ptm->tm_mon+1,p tm->tm_mday); return(p); } 其中 //系统时间已经获得 //年: ptm -> tm_year+1900 //月: ptm-> tm_mon+1 //日: ptm -> tm_mday //星期: ptm -> tm_wday *注意这个,tm_wday返回的是整数,必须经过转换才能用来表示星期几

labView中如何获取windows当前系统时间

labView中如何获取windows当前系统时间 《labview8.2入门到精通》的PPT,第4章里面有个练习是“写一个VI获取当前系统时间,并将其转换为字符串和浮点数”。完成效果如图。我要怎么来获取当前系统的时间呢? 程序如下,还是比较简单的,用到的函数都在编程---定时和编程---数值---转换里 问题: 我从一个仪器当中读取到了GPS时间,并想在LabVIEW中以较高的分辨率设定Windows系统时间。我注意到LabVIEW的时间函数选版中有获取时间/日期的VI,但没有设定时间的VI。如何才能在LabVIEW中实现时间设定?

解答: LabVIEW中没有现成的VI用于系统时间设定,但可以通过Windows SDK来实现。参考以下的步骤,通过调用库函数节点的方式,调用kernel32.dll中SetSystemTime函数,可以设定系统时间: 1. 在程序框图中放置一个调用库函数节点。双击此节点打开调用 库函数对话框。 2. 点击浏览按钮并选择kernel32.dll (一般放置于 "C:\WINDOWS\system32\kernel32.dll")。 3. 在函数名下拉列表中选择"SetSystemTime" 。 4. 在调用规范下拉列表中选择"stdcall (WINAPI)" 。 5. 在返回类型中选择“数值”以及“有符号8位整数”。 6. 点击添加参数并在类型中选择“匹配至类型”,接着在数据格式 中选择“句柄指针”。 7. 点击确定按钮,完成对调用库函数节点的配置。 8. 这个函数以一个包含八个双字节(16位整数)的结构体作为参 数。在LabVIEW中,需要创建一个包含八个双字节的簇来传 递这个参数。八个双字节分别为年、月、星期、日、小时、分 钟、秒以及毫秒。将此簇连接至调用库函数节点的参数1。 9. 输入相应的值,并运行程序以设定系统时间。

linux下获取系统时间的方法

linux下获取系统时间的方法 时间:2009-11-11 13:45:04 来源:Linux联盟作者:可以用localtime 函数分别获取年月日时分秒的数值。 Linux下获得系统时间的C语言的实现方法: 1. 可以用localtime 函数分别获取年月日时分秒的数值。 #include //C语言的头文件 #include //C语言的I/O void main() { time_t now; //实例化time_t结构 struct tm *timenow; //实例化tm结构指针 time(&now); //time函数读取现在的时间(国际标准时间非北京时间),然后传值给now timenow = localtime(&now); //localtime函数把从time取得的时间now换算成你电脑中的时间(就是你设置的地区) printf("Local time is %sn",asctime(timenow)); //上句中asctime函数把时间转换成字符,通过printf()函数输出 } 注释:time_t是一个在time.h中定义好的结构体。而tm结构体的原形如下: struct tm { int tm_sec;//seconds 0-61 int tm_min;//minutes 1-59 int tm_hour;//hours 0-23 int tm_mday;//day of the month 1-31 int tm_mon;//months since jan 0-11 int tm_year;//years from 1900 int tm_wday;//days since Sunday, 0-6 int tm_yday;//days since Jan 1, 0-365 int tm_isdst;//Daylight Saving time indicator }; 2. 对某些需要较高精准度的需求,Linux提供了gettimeofday()。

C#获取当前系统时间

C#获取当前系统时间 2010-01-02 16:24 --DateTime 数字型 System.DateTimecurrentTime=new System.DateTime(); 取当前年月日时分秒 currentTime=System.DateTime.Now; 取当前年 int 年=currentTime.Year; 取当前月 int 月=currentTime.Month; 取当前日 int 日=currentTime.Day; 取当前时 int 时=currentTime.Hour; 取当前分 int 分=currentTime.Minute; 取当前秒 int 秒=currentTime.Second; 取当前毫秒 int毫秒=https://www.360docs.net/doc/fd17171272.html,lisecond; (变量可用中文) 取中文日期显示——年月日时分 string strY=currentTime.ToString("f"); //不显示秒 取中文日期显示_年月 string strYM=currentTime.ToString("y"); 取中文日期显示_月日 string strMD=currentTime.ToString("m"); 取当前年月日,格式为:2003-9-23 string strYMD=currentTime.ToString("d"); 取当前时分,格式为:14:24 string strT=currentTime.ToString("t"); DateTime.Now.ToString();//获取当前系统时间完整的日期和时间DateTime.Now.ToLongDateString();//只显示日期 xxxx年xx月xx日,一个是长日期 DateTime.Now.ToShortDateString();//只显示日期 xxxx-xx-xx 一个是短日期 //今天 DateTime.Now.Date.ToShortDateString(); //昨天的 DateTime.Now.AddDays(-1).ToShortDateString(); //明天的 DateTime.Now.AddDays(1).ToShortDateString(); //本周(注意这里的每一周是从周日始至周六止) DateTime.Now.AddDays(Convert.ToDouble((0 - Convert.ToInt16(DateTime.Now.DayOfWeek)))).ToShortDateString(); DateTime.Now.AddDays(Convert.ToDouble((6 - Convert.ToInt16(DateTime.Now.DayOfWeek)))).ToShortDateString(); //上周,上周就是本周再减去7天 DateTime.Now.AddDays(Convert.ToDouble((0 - Convert.ToInt16(DateTime.Now.DayOfWeek))) - 7).ToShortDateString();

VC 获取当前时间

VC++中其实还是通过调用它自带的CTime类来完成的获取当前系统时间的,我们做一个小程序来了解这个过程吧!对话框里只有两个显示框和两个按钮,点下按钮显示当前时间。就这么一个小程序。 (1)建立应用程序外壳 创建一个新的AppWizard项目,命名为shiyan,选择Dialog based;其他都选用默认属性,单击Finish完成生成应用程序的步骤。进入对话框界面以后,按下图所示布置显示框和功能按钮。 (2)设置参数 其中上面的显示文本框设为CString型,命名为m_show,ID号为IDC_show。下面的显示文本框设为CString型,命名为m_show1,ID号为IDC_show1。 (3)编译程序 start键程序: void CDate1Dlg::Onstart() { //count=0; SetTimer(1,1000,NULL); // TODO: Add your control notification handler code here

} stop键程序: void CDate1Dlg::Onstop() { KillTimer(1); // TODO: Add your control notification handler code here } (4)增加计时器控件 View -> ClassWizard -> MessageMaps -> CUse progressDlg,加入WM_TIMER函数,编辑程序: void CDate1Dlg::OnTimer(UINT nIDEvent) { if(nIDEvent==1) { // count++; UpdateData(1); CTime mtime=CTime::GetCurrentTime();//获取当前时间 char i; CString w; i=char (mtime.GetDayOfWeek()); //获取当前时间的天数是这个星期的第几天,这里要注意了,系统上默认的一个星期的第一天是星期日,最后一天是周六,大家千万不要搞错了。我也是试了才知道的。 switch(i)//将数字状换成字符就不会出现星期7这种情况了 { case 2:

c++ 简单获取系统时间

C++获取时间方法有多种,其中比较实用的是localtime函数 我们来看下下面这个范例 struct tm t; //tm结构指针 time_t nowT; //声明time_t类型变量 time(&nowT); //获取系统日期和时间 t = localtime( &nowT); //获取当地日期和时间 printf("%4d年%02d月%02d日%02d:%02d:%02d\n", t.tm_year + 1900, t.tm_mon + 1, t.tm_mday, t.tm_hour, t.tm_min, t.tm_sec); //格式化输出本地时间 该方法是调用了localtime函数进行时间获取,使用时得包含time.h头文件 #include 但是在vs上不少人会遇到编译器的报错提示,要求把localtime换成localtime_s 解释是为了安全性 如果出现这种情况我们只要改一行代码即可 t = localtime( &nowT); 改为localtime_s( &t,&nowT); 如果想要一次性输出日期与时间,那我们就要用到asctime函数 struct tm t; //tm结构指针 time_t nowT; //声明time_t类型变量 time(&nowT); //获取系统日期和时间 t = localtime( &nowT); //获取当地日期和时间 char TIMET[32]; TIMET = asctime(,&t); printf("now is: %s\n",TIMET ); 如诺出现vs的编译器报错,那只需要改成这样既可 struct tm t; //tm结构指针 time_t nowT; //声明time_t类型变量 time(&nowT); //获取系统日期和时间 localtime_s(&t, &nowT); //获取当地日期和时间 char TIMET[32]; asctime_s(TIMET, &t); printf("now is: %s\n",TIMET);

C语言获取当前系统时间的几种方式

C语言中如何获取时间?精度如何? 1 使用time_t time( time_t * timer ) 精确到秒 2 使用clock_t clock() 得到的是CPU时间精确到1/CLOCKS_PER_SEC秒 3 计算时间差使用double difftime( time_t timer1, time_t timer0 ) 4 使用DWORD GetTickCount() 精确到毫秒 5 如果使用MFC的CTime类,可以用CTime::GetCurrentTime() 精确到秒 6 要获取高精度时间,可以使用 BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency) 获取系统的计数器的频率 BOOL QueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount) 获取计数器的值 然后用两次计数器的差除以Frequency就得到时间。 7 Multimedia Timer Functions The following functions are used with multimedia timers. timeBeginPeriod/timeEndPeriod/timeGetDevCaps/timeGetSystemTime //********************************************************************* //用标准C实现获取当前系统时间的函数 一.time()函数 time(&rawtime)函数获取当前时间距1970年1月1日的秒数,以秒计数单位,存于rawtime 中。#include "time.h" void main () { time_t rawtime; struct tm * timeinfo; time ( &rawtime );

vc++获取系统时间和程序运行时间

内容: Q:如何获取时间?精度如何? A: 1 使用time_t time( time_t * timer ) 精确到秒 计算时间差使用double difftime( time_t timer1, time_t timer0 ) 2 使用clock_t clock() 得到的是CPU时间精确到1/CLOCKS_PER_SEC秒 3 使用DWORD GetTickCount() 得到的是系统运行的时间精确到毫秒 4 如果使用MFC的CTime类,可以用CTime::GetCurrentTime() 精确到秒 5 要获取高精度时间,可以使用 BOOL QueryPerformanceFrequency(LARGE_INTEGER *lpFrequency)获取系统的计数器的频率 BOOL QueryPerformanceCounter(LARGE_INTEGER *lpPerformanceCount)获取计数器的值 然后用两次计数器的差除以Frequency就得到时间。 6 还有David的文章中提到的方法: Multimedia Timer Functions The following functions are used with multimedia timers. timeBeginPeriod/timeEndPeriod/timeGetDevCaps/timeGetSystemTime timeGetTime/timeKillEvent/TimeProc/timeSetEvent 精度很高 Q:GetTickCount()函数,说是毫秒记数,是真的吗,还是精确到55毫秒? A: GetTickCount()和GetCurrentTime()都只精确到55ms(1个tick就是55ms)。如果要精确到毫秒,应该使用timeGetTime函数或QueryPerformanceCounter函数。具体例子可以参考QA001022 "VC++中使用高精度定时器"、QA001813 "如何在Windows实现准确的定时"和QA004842 "timeGetTime函数延时不准"。 Q:vc++怎样获取系统时间,返回值是什么类型的变量呢? GetSystemTime返回的是格林威志标准时间 GetLocalTime,和上面用法一样,返回的是你所在地区的时间,中国返回的是北京时间VOID GetSystemTime( LPSYSTEMTIME lpSystemTime // address of system time structure ); 函数就可以获得了,其中LPSYSTEMTIME 是个结构体 含:年,月,日,周几,小时,分,秒,毫秒。 以下是Time的MSDN文档: Compatibility in the Introduction. Libraries LIBC.LIBSingle thread static library, retail versionLIBCMT.LIBMultithread static library, retail versionMSVCRT.LIBImport library for MSVCRT.DLL, retail version Return Value time returns the time in elapsed seconds. There is no error return. Parameter timer Storage location for time Remarks

PHP获取系统当前时间date函数

PHP获取系统当前时间date函数.txt偶尔要回头看看,否则永远都在追寻,而不知道自己失去了什么。男人掏钱是恋人关系,女人掏钱是夫妻关系,男女抢着掏钱是朋友关系。男人爱用眼睛看女人,最易受美貌迷惑;女人爱用心看男人,最易受伤心折磨。使用函式 date() 实现 显示的格式: 年-月-日小时:分钟:秒 相关时间参数: a - "am" 或是 "pm" A - "AM" 或是 "PM" d - 几日,二位数字,若不足二位则前面补零; 如: "01" 至 "31" D - 星期几,三个英文字母; 如: "Fri" F - 月份,英文全名; 如: "January" h - 12 小时制的小时; 如: "01" 至 "12" H - 24 小时制的小时; 如: "00" 至 "23" g - 12 小时制的小时,不足二位不补零; 如: "1" 至 12" G - 24 小时制的小时,不足二位不补零; 如: "0" 至 "23" i - 分钟; 如: "00" 至 "59" j - 几日,二位数字,若不足二位不补零; 如: "1" 至 "31" l - 星期几,英文全名; 如: "Friday" m - 月份,二位数字,若不足二位则在前面补零; 如: "01" 至 "12" n - 月份,二位数字,若不足二位则不补零; 如: "1" 至 "12" M - 月份,三个英文字母; 如: "Jan" s - 秒; 如: "00" 至 "59" S - 字尾加英文序数,二个英文字母; 如: "th","nd" t - 指定月份的天数; 如: "28" 至 "31" U - 总秒数 w - 数字型的星期几,如: "0" (星期日) 至 "6" (星期六) Y - 年,四位数字; 如: "1999" y - 年,二位数字; 如: "99" z - 一年中的第几天; 如: "0" 至 "365" 可以自由设定显示的内容,连接符号或是显示位置,例如date("m-d H") 或者date("dmY");?>等php中的日期处理 加入时间:2004-12-18 17:35:22 大小:12 KB 阅读次数:1405PHP中的日期处理 转贴:xiaxia 日期:2004-05-26 人气:9 我正打算用PHP编写一种帮助处理系统。我发现我必须知道处理完最后一位客户的问题后已经过去了多长时间?当我过去用ASP时解决这个问题相当简单,ASP有相应的函数 DateDiff 可以给出两个日期间间隔多少月、多少天和多少秒。当我搜寻完PHP手册后我发现PHP并没

VS2010 MFC 获取当前系统时间

1.使用CTime类 CString str; //获取系统时间 CTime tm; tm=CTime::GetCurrentTime(); str=tm.Format("现在时间是%Y年%m月%d日%X"); MessageBox(str,NULL,MB_OK); 2: 得到系统时间日期(使用GetLocalTime) SYSTEMTIME st; CString strDate,strTime; GetLocalTime(&st); strDate.Format("%4d-%2d-%2d",st.wYear,st.wMonth,st.wDay); strTime.Format("%2d:%2d:%2d",st.wHour,st.wMinute,st.wSecond); 3.使用GetTickCount//获取程序运行时间 long t1=GetTickCount();//程序段开始前取得系统运行时间(ms) Sleep(500); long t2=GetTickCount();//程序段结束后取得系统运行时间(ms) str.Format("time:%dms",t2-t1);//前后之差即程序运行时间AfxMessageBox(str);//获取系统运行时间 long t=GetTickCount(); CString str,str1; str1.Format("系统已运行%d时",t/3600000); str=str1; t%=3600000; str1.Format("%d分",t/60000); str+=str1; t%=60000; str1.Format("%d秒",t/1000); str+=str1; AfxMessageBox(str);

Java获取当前时间的方法

package happy_1; import java.util.Calendar; import java.util.Date; import java.sql.*; public class DealDate { /** * @param args */ public static void main(String[] args) { System.out.println(System.currentTimeMillis());//获取当前时间,是从1970年1月1日00:00:00;以来的一毫秒为单位的走过的毫秒数,返回long类型; Date date = new Date();//获取当前时间来实例化一个Date对象; String str= date.toString(); //date对象调用toString()方法; System.out.println(str); System.out.println(String.valueOf(date.getHours()));//获取时间; System.out.println(String.valueOf(date.getMinutes()));// 获取分钟; System.out.println(String.valueOf(date.getMonth()));//获取月份; System.out.println(String.valueOf(date.getSeconds()));// 获取秒; Calendar calendar = Calendar.getInstance();//以当前时间来实例化Calendar对象calendar; Date dt = calendar.getTime();//获取当前时间; System.out.println(String.valueOf(dt)); System.out.println(String.valueOf(dt.getDay()));//获取日期; System.out.println(String.valueOf(dt.getHours()));//获取时; System.out.println(String.valueOf(dt.getMinutes()));//获取分钟; System.out.println(String.valueOf(dt.getMonth()));//获取月份; System.out.println(String.valueOf(dt.getSeconds()));//

Python获取当前时间

python 获取当前时间 我有的时候写程序要用到当前时间,我就想用python去取当前的时间,虽然不是很难,但是老是忘记,用一次丢一次, 为了能够更好的记住,我今天特意写下python 当前时间这篇文章,如果你觉的对你有用的话,可以收藏下。 取得时间相关的信息的话,要用到python time模块,python time模块里面有很多非常好用的功能,你可以去官方 文档了解下,要取的当前时间的话,要取得当前时间的时间戳,时间戳好像是1970年到现在时间相隔的时间。 你可以试下下面的方式来取得当前时间的时间戳: import time print time.time() 输出的结果是: 1279578704.672 该结果为时间戳(单位:秒) 如果希望得到毫秒将该值*1000,即:time.time()*1000 但是这样是一连串的数字不是我们想要的结果,我们可以利用time模块的格式化时间的方法来处理:time.localtime(time.time()) 用time.localtime()方法,作用是格式化时间戳为本地的时间。 输出的结果是: time.struct_time(tm_year=2010, tm_mon=7, tm_mday=19, tm_hour=22, tm_min=33, tm_sec=39, tm_wday=0, tm_yday=200, tm_isdst=0) 现在看起来更有希望格式成我们想要的时间了。 time.strftime('%Y-%m-%d',time.localtime(time.time())) 最后用time.strftime()方法,把刚才的一大串信息格式化成我们想要的东西,现在的结果是: 2010-07-19 time.strftime里面有很多参数,可以让你能够更随意的输出自己想要的东西: 下面是time.strftime的参数: strftime(format[, tuple]) -> string 将指定的struct_time(默认为当前时间),根据指定的格式化字符串输出 python中时间日期格式化符号: %y 两位数的年份表示(00-99) %Y 四位数的年份表示(000-9999) %m 月份(01-12) %d 月内中的一天(0-31) %H 24小时制小时数(0-23)

VC++获得当前系统时间的几种方案

VC++获得当前系统时间的几种方案 //方案—优点:仅使用C标准库;缺点:只能精确到秒级 #include #include int main( void ) { time_t t = time( 0 ); char tmp[64]; strftime( tmp, sizeof(tmp), "%Y/%m/%d %X %A 本年第%j天%z", localtime(&t) ); puts( tmp ); return 0; } //方案二优点:能精确到毫秒级;缺点:使用了windows API #include #include int main( void ) { SYSTEMTIME sys; GetLocalTime( &sys ); printf( "%4d/%02d/%02d %02d:%02d:%02d.%03d 星期%1d\n" ,sys.wYear,sys.wMonth,sys.wDay ,sys.wHour,sys.wMinute,sys.wSecond,sys.wMilliseconds ,sys.wDayOfWeek); return 0; } //方案三,优点:利用系统函数 #include #include using namespace std; void main(){ system("time"); } 可以改变电脑的时间设定 方案4: #include #include using namespace std; int main() { time_t now_time; now_time = time(NULL);

获取系统时间

获取系统时间 LG GROUP system office room 【LGA16H-LGYY-LGUA8Q8-LGA162】

\\"; (0,PathString); PathString = ".dat"; (0,FileNameString); FileNameString = PathString; VC++中其实还是通过调用它自带的CTime类来完成的获取当前系统时间的,我们做一个小程序来了解这个过程吧!对话框里只有两个显示框和两个按钮,点下按钮显示当前时间。就这么一个小程序。 (1)建立应用程序外壳 创建一个新的AppWizard项目,命名为shiyan,选择Dialog based;其他都选用默认属性,单击Finish完成生成应用程序的步骤。进入对话框界面以后,按下图所示布置显示框和功能按钮。 (2)设置参数 其中上面的显示文本框设为CString型,命名为m_show,ID号为IDC_show。 下面的显示文本框设为CString型,命名为m_show1,ID号为IDC_show1。 (3)编译程序 start键程序: void CDate1Dlg::Onstart(){ d "),,,,,,,; 用CTime类 CTime tm=CTime::GetCurrentTime(); CString str=(“现在时间是:%Y年%m月%d日 %X”); MessageBox(str,NULL,MB_OK); 2: 得到系统时间日期(使用GetLocalTime) SYSTEMTIME st; CString strDate,strTime; GetLocalTime(&st); (“%4d-%2d-%2d”,,,); (“%2d:%2d:%2d”,,,); 3.使用GetTickCount//获取程序运行时间 long t1=GetTickCount();//程序段开始前取得系统运行时间(ms)……//程序段 long t2=GetTickCount();//程序段结束后取得系统运行时间(ms) long t = t2-t1; //前后之差即程序运行时间(ms) 2010-05-18/

C 中于获取当前时间的函数

a s c t i m e (将时间 和日期以 字符串格 式表示) 相关函数time,ctime,gmtime,localtime 表头文件#include 定义函数char*asctime(conststructtm*timeptr); 函数说明asctime()将参数timeptr所指的tm结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果以字符串形态返回。此函数已经由时区转换成当地时间,字符 串格式为:“WedJun3021:49:081993\n” 返回值若再调用相关的时间日期函数,此字符串可能会被破坏。此函数与ctime不同处在于传入的参数是不同的结构。 附加说明返回一字符串表示目前当地的时间日期。 范例#include main() { time_ttimep; time(&timep); printf(“%s”,asctime(gmtime(&timep))); } 执行SatOct2802:10:062000 ctime(将时间和日期以字符串格式表示) 相关函数time,asctime,gmtime,localtime 表头文件#include 定义函数char*ctime(consttime_t*timep); 函数说明ctime()将参数timep所指的time_t结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果以字符串形态返回。此函数已经由时区转换成当地时间,字符 串格式为“WedJun3021:49:081993\n”。若再调用相关的时间日期函数,此字符串可 能会被破坏。 返回值返回一字符串表示目前当地的时间日期。 范例#include main() {

JAVA中获取当前系统时间

JAVA中获取当前系统时间 一. 获取当前系统时间和日期并格式化输出: import import class NowString { public static void main(String[] args) { SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");在数据库里的日期只以年-月-日的方式输出,可以用下面两种方法: 1、用convert()转化函数: String sqlst = "select convert(varchar(10),bookDate,126) as convertBookDate from roomBook where bookDate between '2007-4-10' and '2007-4-25'"; "convertBookDate")); 2、利用SimpleDateFormat类: 先要输入两个java包: import import 然后: 定义日期格式:SimpleDateFormat sdf = new SimpleDateFormat(yy-MM-dd); sql语句为:String sqlStr = "select bookDate from roomBook where bookDate between '2007-4-10' and '2007-4-25'"; 输出: "bookDate")));

************************************************************ java中获取当前日期和时间的方法 import import import public class TestDate{ public static void main(String[] args){ Date now = new Date(); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");//可以方便地修改日期格式

相关文档
最新文档