導航:首頁 > 操作系統 > android時間格式化

android時間格式化

發布時間:2023-05-23 20:26:04

android:如何獲取當前系統毫秒

Date dt= new Date();
Long time= dt.getTime();//這就是距離1970年1月1日0點0分0秒的毫秒數

DateFormat 是日期/時間格式化子類的抽象類,它以與語言無關的方式格式化並解析日期或時間。日期/時間格式化子類(如 SimpleDateFormat)允許進行格式化(也就是日期 -> 文本)、解析(文本-> 日期)和標准化。將日期表示為 Date 對象,或者表示為從 GMT(格林尼治標准時間)1970 年 1 月 1 日 00:00:00 這一刻開始的毫秒數。
DateFormat 提供了很多類方法,以獲得基於默認或給定語言環境和多種格式化風格的默認日期/時間 Formatter。格式化風格包括 FULL、LONG、MEDIUM 和 SHORT。方法描述中提供了使用這些風格的更多細節和示例。
DateFormat 可幫助進行格式化並解析任何語言環境的日期。對於月、星期,甚至日歷格式(陰歷和陽歷),其代碼可完全與語言環境的約定無關。

Ⅱ android 時間格式化的問題

java">publicclassDateTest{

publicstaticvoidmain(String[]args){

Stringstr="2015-01-01T00:00:00+08:00";
//截取「T」前面的字元串
StringtestStr=str.split("T")[0];

StringformatStr="yyyyMMdd";
StringdateFromatStr="yyyy-MM-dd";
Stringdate=DateTest.StringToDate(testStr,dateFromatStr,formatStr);
}

/**
*字元串轉換到時間格式
*@paramdateStr需要轉換的字元串
*@returndateFormatStr需要轉換的字元串的時間格式
*@paramformatStr需要格式的目標字元串舉例yyyyMMdd
*@returnString返回轉換後的時間字元串
*@throwsParseException轉換異常
*/
(StringdateStr,StringdateFormatStr,StringformatStr){
DateFormatsdf=newSimpleDateFormat(dateFormatStr);
Datedate=null;
try{
date=sdf.parse(dateStr);
}catch(ParseExceptione){
e.printStackTrace();
}
SimpleDateFormats=newSimpleDateFormat(formatStr);

returns.format(date);
}

}

如果滿意的話,採納我的答案吧,謝謝。

Ⅲ android中在編輯框怎樣獲取日期

這取決於對日期的格式定義

假如日期格式為2015-12-09即為2015年12月9日

可以使用SimpleDateFormat把字元串格式化轉為日期

示例如下

{

privateEditTextetDate;
privateButtonbtn;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
etDate=(EditText)findViewById(R.id.text);
btn=(Button)findViewById(R.id.button);
btn.setOnClickListener(newOnClickListener(){

@Override
publicvoidonClick(Viewv){
Stringtxt=etDate.getText().toString();
SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dd");
Datedate=sdf.parse(txt);
}
});
}
}

SimpleDateFormat的語法格式

G 年代標志符
y 年
M 月
d 日
h 時 在上午或下午 (1~12)
H 時 在一天中 (0~23)
m 分
s 秒
S 毫秒
E 星期
D 一年中的第幾天
F 一月中第幾個星期幾
w 一年中第幾個星期
W 一月中第幾個星期
a 上午 / 下午 標記符
k 時 在一天中 (1~24)
K 時 在上午或下午 (0~11)
z 時區

Ⅳ Android Gson 使用詳解

Json 是一種文本形式的數據交換格式,比 xml 更為輕量。Json 的解析和生成的方式很多,在 Android 平台上最常用的類庫有 Gson 和 FastJson 兩種,這里要介紹的是 Gson

Gson 的 GitHub 主頁點擊這里: Gson

在進行序列化與反序列操作前,需要先實例化一個 com .google.gson.Gson 對象,獲取 Gson 對象的方法有兩種

利用 Gson 可以很方便地生成 Json 字元串,通過使用 addProperty 的四個重載方法

addProperty 方法底層調用的是 add(String property, JsonElement value) 方法,即將基本數據類型轉化為了 JsonElement 對象,JsonElement 是一個抽象類,而 JsonObject 繼承了 JsonElement ,因此我們可以通過 JsonObject 自己來構建一個 JsonElement

Json數組 與 字元串核派轎數組

Json數組 與 List

Gson 也提供了 toJson() 和 fromJson() 兩個方法用於轉化 Model 與 Json,前者實現了序列化,後者實現了反序列化
首先,聲明一個 User 類

序列化的方法很簡單,調用 gson 對象的 toJson 方法,傳入要序列化的對象

反序化的方式也類似

繼續使用上一節聲明的 User 類,根據 User 類聲明的各個屬性名,移動端的開發者希望介面返回的數據格式即是如下這樣的

如果沒有和伺服器端溝通好或者是 API 改版了,介面返回的數據格式可能是這樣的

如果繼續使用上一節介紹的方法,那無疑會解析出錯
例如

name 屬性值解析不到,所以為 null

此時為了兼顧多種格式的數據,就需要使用羨盯 SerializedName 註解
根據 SerializedName 的聲明來看,SerializedName 包含兩個屬性值,一個是字元串,一個是字元串數組,而字元串數組含有默認值

SerializedName 的作用是為了在序列化或反序列化時,指導 Gson 如果將原有的屬性名和其它特殊情況下的屬性名聯系起來

例如,修改 User 類,為 name 聲明 SerializedName 註解,註解值為 userName

在序列時,Json 格式就會相應改變

在反序列化時也一樣,能夠解析到正確的屬性值

還有個問題沒解決,為了應對多種屬性名不一致的情況,難道我們要聲明多個 User 類嗎?這顯然是不現實的,所以還需要為 User 類設置多個備選屬性名,這就需要用到 SerializedName 註解的另一個屬性值 alternate 了。

以下幾種情況都能夠被正確的反序列化

有時候並不是所有的欄位都需要進行系列化和反序列化,因此需要對某些欄位進行排除,有四種方法可以來實現這種需求。

Expose 註解包含兩個屬性值,且均聲明了默認值。Expose 的含義即為「暴露」,即用於對外暴露欄位,serialize 用於指改肆定是否進行序列化,deserialize 用於指定是否進行反序列化。如果欄位不聲明 Expose 註解,則意味著不進行序列化和反序列化操作,相當於兩個屬性值均為 false 。此外,Expose 註解需要和 GsonBuilder 構建的 Gson 對象一起使用才能生效。

Expose 註解的註解值聲明情況有四種

現在來看個例子,修改 User 類

按照如上的註解值,只有聲明了 Expose 註解且 serialize 值為 true 的欄位才能被序列化,只有聲明了 Expose 註解且 deserialize 值為 true 的欄位才能被反序列化

Gson 提供了 @Since 和 @Until 兩個註解基於版本對欄位進行過濾,@Since 和 @Until 都包含一個 Double 屬性值,用於設置版本號。Since 的意思是「自……開始」,Until 的意思是「到……為止」,一樣要和 GsonBuilder 配合使用。

當版本( GsonBuilder 設置的版本) 大於或等於 Since 屬性值或小於 Until 屬性值時欄位會進行序列化和反序列化操作,而沒有聲明註解的欄位都會加入序列化和反序列操作

現在來看個例子,修改 User 類

訪問修飾符由 java.lang.reflect.Modifier 提供 int 類型的定義,而 GsonBuilder 對象的 excludeFieldsWithModifiers 方法接收一個 int 類型可變參數,指定不進行序列化和反序列化操作的訪問修飾符欄位
看個例子

GsonBuilder 類包含 setExclusionStrategies(ExclusionStrategy... strategies) 方法用於傳入不定長參數的策略方法,用於直接排除指定欄位名或者指定欄位類型
看個例子

欄位名為 "intField" 和欄位類型為 double 的欄位都會被排除掉

setExclusionStrategies 方法在序列化和反序列化時都會生效,如果只是想指定其中一種情況下的排除策略或分別指定排除策略,可以改為使用以下兩個方法

對於 Gson 而言,在序列化時如果某個屬性值為 null 的話,那麼在序列化時該欄位不會參與進來,如果想要顯示輸出該欄位的話,可以通過 GsonBuilder 進行配置

默認的序列化後的 Josn 字元串並不太直觀,可以選擇格式化輸出

Gson 也可以對時間值進行格式化

TypeAdapter 是一個泛型抽象類,用於接管某種類型的序列化和反序列化過程,包含兩個抽象方法,分別用於自定義序列化和反序列化過程

下面看個簡單的例子

定義 TypeAdapter 的子類 UserTypeAdapter 來接管 User 類的序列化和反序列化過程
這里設定當 User 類序列化時 Json 中的Key值都是大寫字母開頭,反序列化時支持「name」和「Name」兩種不同的 Json 風格

可以看到 User 類按照預定義的策略來完成序列化和反序列化了

TypeAdapter 將序列化和反序列操作都接管了過來,其實 Gson 還提供了只接管序列化過程的介面,即 JsonSerializer
看個例子

相對應的,JsonDeserializer 介面提供了反序列化的介面

這里有個比較麻煩的地方,那就是在使用 TypeAdapter 、JsonSerializer JsonDeserializer 時,總需要調用 registerTypeAdapter 方法進行注冊,那有沒有更簡單的注冊方法呢?
有的,Gosn 還提供了另一個註解 @JsonAdapter 用於進行簡單的聲明

類似於這樣,聲明了 User 類的序列化或反序列化操作由 UserTypeAdapter 完成,註解的優先順序高於 registerTypeAdapter 方法

TypeAdapterFactory 是用於創建 TypeAdapter 的工廠類,通過參數 TypeToken 來查找確定對應的 TypeAdapter,如果沒有就返回 null 並由 Gson 默認的處理方法來進行序列化和反序列化操作,否則就由用戶預定義的 TypeAdapter 來進行處理

這一篇文章好像寫得太長了一點?Gson 的知識點介紹到這里也差不多了,以後如果還發現新內容的話我會繼續補充,現在就先這樣啦

Ⅳ android format怎麼用

下面是android學習手冊的文檔介紹,如果想看埋坦例子,請去下載android學習手冊。android學習手冊包含9個章節,108個例子,源碼文檔隨便看,例子都是可交互,可運行, 源碼採用android studio目錄結構,高亮顯示代碼,文檔都採用文檔結構圖顯示,可以快速定位。360手機助手中下載,圖標上有貝殼
常規類型的格式化
String類的format()方法用於創建格式化的字元串以及連接多個字元串對象。熟悉C語言的同學應該記得C語言的sprintf()方法,兩者有類似之處。format()方法有兩種重載形式。

format(String format, Object... args) 新字元串使用本地語言環境,制定字元串格式和參數生成格式化的新字元串。

format(Locale locale, String format, Object... args) 使用指定的語言環境,制定字元串格式和參數生成格式化的字元串。
public static void main(String[] args) {
String str=null;
str=String.format("Hi,%s", "王力");
System.out.println(str);
str=String.format("Hi,%s:%s.%s", "王南","王力","王張");
System.out.println(str);
System.out.printf("字母a的大寫是:%c %n", '彎州桐A');
System.out.printf("3>7的結果是:%b %n", 3>7);
System.out.printf("100的一半是:%d %n", 100/2);
System.out.printf("100的16進制數是:%x %n", 100);
System.out.printf("100的8進制數是:%o %n", 100);
System.out.printf("50元的書打8.5折扣是:%f 元%n", 50*0.85);
System.out.printf("上面價格的16進制數是:%a %n", 50*0.85);
System.out.printf("上面價格的指數表示:跡核%e %n", 50*0.85);
System.out.printf("上面價格的指數和浮點數結果的長度較短的是:%g %n", 50*0.85);
System.out.printf("上面的折扣是%d%% %n", 85);
System.out.printf("字母A的散列碼是:%h %n", 'A');
}

public static void main(String[] args) {
String str=null;
str=String.format("Hi,%s", "王力");
System.out.println(str);
str=String.format("Hi,%s:%s.%s", "王南","王力","王張");
System.out.println(str);
System.out.printf("字母a的大寫是:%c %n", 'A');
System.out.printf("3>7的結果是:%b %n", 3>7);
System.out.printf("100的一半是:%d %n", 100/2);
System.out.printf("100的16進制數是:%x %n", 100);
System.out.printf("100的8進制數是:%o %n", 100);
System.out.printf("50元的書打8.5折扣是:%f 元%n", 50*0.85);
System.out.printf("上面價格的16進制數是:%a %n", 50*0.85);
System.out.printf("上面價格的指數表示:%e %n", 50*0.85);
System.out.printf("上面價格的指數和浮點數結果的長度較短的是:%g %n", 50*0.85);
System.out.printf("上面的折扣是%d%% %n", 85);
System.out.printf("字母A的散列碼是:%h %n", 'A');
}

Hi,王力
Hi,王南:王力.王張
字母a的大寫是:A
3>7的結果是:false
100的一半是:50
100的16進制數是:64
100的8進制數是:144
50元的書打8.5折扣是:42.500000 元
上面價格的16進制數是:0x1.54p5
上面價格的指數表示:4.250000e+01
上面價格的指數和浮點數結果的長度較短的是:42.5000
上面的折扣是85%
字母A的散列碼是:41

Hi,王力
Hi,王南:王力.王張
字母a的大寫是:A
3>7的結果是:false
100的一半是:50
100的16進制數是:64
100的8進制數是:144
50元的書打8.5折扣是:42.500000 元
上面價格的16進制數是:0x1.54p5
上面價格的指數表示:4.250000e+01
上面價格的指數和浮點數結果的長度較短的是:42.5000
上面的折扣是85%
字母A的散列碼是:41
搭配轉換符的標志,如圖所示。

public static void main(String[] args) {
String str=null;
//$使用
str=String.format("格式參數$的使用:%1$d,%2$s", 99,"abc");
System.out.println(str);
//+使用
System.out.printf("顯示正負數的符號:%+d與%d%n", 99,-99);
//補O使用
System.out.printf("最牛的編號是:%03d%n", 7);
//空格使用
System.out.printf("Tab鍵的效果是:% 8d%n", 7);
//.使用
System.out.printf("整數分組的效果是:%,d%n", 9989997);
//空格和小數點後面個數
System.out.printf("一本書的價格是:% 50.5f元%n", 49.8);
}

public static void main(String[] args) {
String str=null;
//$使用
str=String.format("格式參數$的使用:%1$d,%2$s", 99,"abc");
System.out.println(str);
//+使用
System.out.printf("顯示正負數的符號:%+d與%d%n", 99,-99);
//補O使用
System.out.printf("最牛的編號是:%03d%n", 7);
//空格使用
System.out.printf("Tab鍵的效果是:% 8d%n", 7);
//.使用
System.out.printf("整數分組的效果是:%,d%n", 9989997);
//空格和小數點後面個數
System.out.printf("一本書的價格是:% 50.5f元%n", 49.8);
}

日期和事件字元串格式化

在程序界面中經常需要顯示時間和日期,但是其顯示的 格式經常不盡人意,需要編寫大量的代碼經過各種演算法才得到理想的日期與時間格式。字元串格式中還有%tx轉換符沒有詳細介紹,它是專門用來格式化日期和時 間的。%tx轉換符中的x代表另外的處理日期和時間格式的轉換符,它們的組合能夠將日期和時間格式化成多種格式。

Ⅵ Android時間字元串2014-09-17-19:00來判斷是否今天

給你一個我項目中的,應該能滿足需求。別忘了采猜源納哦。

/**
*格式化時間(輸出類似於剛剛,4分鍾前,一小時前,昨天這樣的時間)
*
*@paramtime需要格式化的時間如"2014-07-1419:01:45"
*@parampattern輸入參數time的時間格式如:"yyyy-MM-ddHH:mm:ss"
*<p/>如果為空則默認使用"yyyy-MM-ddHH:mm:ss"格式
*@returntime為null,或者時間格式不匹配,輸出空字元""
*/
禪兆彎(Stringtime,Stringpattern){
Stringdisplay="";
inttMin=60*1000;
inttHour=60*tMin;
inttDay=24*tHour;

if(time!=null){
try{
DatetDate=newSimpleDateFormat(pattern).parse(time);
Datetoday=newDate();
SimpleDateFormatthisYearDf=newSimpleDateFormat("yyyy");
SimpleDateFormattodayDf=newSimpleDateFormat("yyyy-MM-dd");
DatethisYear=newDate(thisYearDf.parse(thisYearDf.format(today)).getTime());
Dateyesterday=newDate(todayDf.parse(todayDf.format(today)).getTime());
DatebeforeYes=newDate(yesterday.getTime()-tDay);
if(tDate!=null){
SimpleDateFormathalfDf=newSimpleDateFormat("MM月dd日");
longdTime=today.getTime()-tDate.getTime();
if(tDate.before(thisYear)){
display=newSimpleDateFormat("yyyy年MM月dd日").format(tDate);
}else{

if(dTime<tMin){
display="剛剛";
}elseif(dTime<tHour){
display=(int)Math.ceil(dTime/tMin)+"分鍾前";
}elseif(dTime<tDay&&tDate.after(yesterday)){
display=賀悶(int)Math.ceil(dTime/tHour)+"小時前";
}elseif(tDate.after(beforeYes)&&tDate.before(yesterday)){
display="昨天"+newSimpleDateFormat("HH:mm").format(tDate);
}else{
display=halfDf.format(tDate);
}
}
}
}catch(Exceptione){
e.printStackTrace();
}
}

returndisplay;
}


Ⅶ android開發,long型時間怎麼取出對應的年月日

long類型的時間說明獲取得到的是時間戳,具體轉換可參考以下代碼

//mill為你龍類型的時間戳
Datedate=newDate(mill);
Stringstrs="";
try{
//yyyy表示年MM表示月dd表示日
//yyyy-MM-dd是日期的格式,比如2015-12-12如果你要得到2015年12月12日就換成yyyy年MM月dd日
SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dd");
//進行格式化
strs=sdf.format(date);
System.out.println(strs);
}catch(Exceptione){
e.printStackTrace();
}

Ⅷ Android如何將時間的格式變為24小時制

格式化參數 小時部分 換成大寫 HH(24小時格式) hh(12小時格式)
例如:12小時的 yyyy-MM-dd hh:mm;ss
24小時的 yyyy-MM-dd HH:mm;ss

Ⅸ Android 怎麼把GMT+8.0轉化為UTC時間

當用戶把信息上傳到伺服器上時,對於時間,常常用UTC時間。怎麼將GMT+8.0時間轉化為UTC時間呢?請參考下面的函數:
[java] public CharSequence GetUTCTime() {
Calendar cal = Calendar.getInstance(Locale.CHINA);
int zoneOffset = cal.get(java.util.Calendar.ZONE_OFFSET);
int dstOffset = cal.get(java.util.Calendar.DST_OFFSET);
cal.add(java.util.Calendar.MILLISECOND, -(zoneOffset + dstOffset));
return DateFormat.format("yyyy'-'MM'-'dd'T'kk':'mm':'ss'Z'", cal);
}
public CharSequence GetUTCTime() {
Calendar cal = Calendar.getInstance(Locale.CHINA);
int zoneOffset = cal.get(java.util.Calendar.ZONE_OFFSET);
int dstOffset = cal.get(java.util.Calendar.DST_OFFSET);
cal.add(java.util.Calendar.MILLISECOND, -(zoneOffset + dstOffset));
return DateFormat.format("yyyy'-'MM'-'dd'T'kk':'mm':'ss'Z'", cal);
}
主要用到的類:java.util.Calendar和android.text.format.DateFormat

閱讀全文

與android時間格式化相關的資料

熱點內容
單片機編程取反 瀏覽:895
51單片機課程設計課題 瀏覽:898
手機淘寶登錄怎麼加密碼 瀏覽:484
linux快捷方式圖標 瀏覽:37
陽光車險的app叫什麼名字 瀏覽:461
購買單片機的器件時需要給商家啥 瀏覽:534
並行編譯技術的發展 瀏覽:550
阿里雲伺服器安裝管理 瀏覽:550
java手機開發教程 瀏覽:674
我的世界怎麼刪除伺服器數據 瀏覽:671
linux內存子系統 瀏覽:972
加密思維幣 瀏覽:690
魅族訪客文件夾 瀏覽:52
添加的文件夾怎麼找 瀏覽:617
程序員涉黃 瀏覽:700
maven編譯resources下的js 瀏覽:522
ubuntu文件移動命令 瀏覽:229
安卓i怎麼查找蘋果手機 瀏覽:951
雲伺服器宕機概率 瀏覽:232
在線買葯用什麼app知乎 瀏覽:815