json日期格式轉換
開發中,往往在後臺把帶有日期型別的一些資料直接轉成json然後繫結到前臺的樣式列表控制元件裡,在控制元件裡獲取或者繫結時,Date型別往往都變成了如
{"date":26,"day":1,"hours":11,"minutes":30,"month":9,"seconds":18,"time":1256527818296,"timezoneOffset":-480,"year":109}這樣的格式,js獲取時,為一個這樣的物件而不是我們想要的“2014-11-11”這樣的日期格式。
如果我們這時我們就需要把這樣的日起格式化成我們所常見的格式,如果想在JS頁面使用,可使用下邊方法:
定義一個如下方法:
function formatDate(v, dateFormat) { try { if (dateFormat == undefined || typeof dateFormat != "string") { dateFormat = "yyyy-MM-dd"; } if ((typeof v) == "number"){ var o = new Date(v*1000); return o.pattern(dateFormat); } if ((typeof v) == "string" && v.indexOf("/Date(") == 0) { var date = eval('new ' + eval(v).source); return date.pattern(dateFormat); } if (v.time) { var o = new Date(v.time); return o.pattern(dateFormat); } else { if (v != "") { v = v.replace(/\//g, "-"); if(v=="1900-01-01 00:00:00"){ return "--"; } if (v.split(" ")) { var myDate = v.split(" ")[0]; } else { var myDate = v; var myTime = ""; } myDate = myDate.replace("-0", "-").replace("-0", "-"); var nowDate = new Date(); /*TD 7111*/ if(myDate.split("-")[0]=="1900"){ return "--"; } if (myDate.split("-")[0] == nowDate.getFullYear()) {//本年度 For td 5858 return myDate.split("-")[0] + "年" + myDate.split("-")[1] + "月" + myDate.split("-")[2] + "日"; } else {//非本年度 return myDate.split("-")[0] + "年" + myDate.split("-")[1] + "月" + myDate.split("-")[2] + "日"; } }else{ return "--"; } } }catch (e) { } return "--"; };
然後把對應的json日期字串以引數形式傳給定義好的函式formatDate,如果直接formatDate(jsonDate),就是返回預設的格式的日期如“2014-11-11”,如果這樣使用formatDate(jsonDate,"yyyy年MM月dd日")可以以指定的日期格式返回。
如果是在java中遇到這樣情況,想在java解決,在此引用一個網友的解決方法:
//註冊date型別的轉化方式
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.registerJsonValueProcessor(java.util.Date.class, new JsonValueProcessorImplTest());
JSONObject jsonFromBean = JSONObject.fromObject(testBean,jsonConfig);
System.out.println(jsonFromBean);
//prints {"birthday":"2009-10-26","id":"id","name":"name"}
String[] dateFormats = new String[] {"yyyy/MM/dd","yyyy-MM-dd"};
JSONUtils.getMorpherRegistry().registerMorpher(new DateMorpher(dateFormats));
TestBean jsonToBean = (TestBean)JSONObject.toBean(jsonFromBean,TestBean.class);
System.out.println(jsonToBean);
//prints [email protected][id=id,name=name,birthday=Mon Oct 26 00:00:00 CST 2009]
其中需要的類如下:
1.準備測試資料
import java.util.Date;
import org.apache.commons.lang.builder.ReflectionToStringBuilder;
public class TestBean {
private String id;
private String name;
private java.util.Date birthday;
public TestBean() {
super();
}
public TestBean(String id, String name, Date birthday) {
super();
this.id = id;
this.name = name;
this.birthday = birthday;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public java.util.Date getBirthday() {
return birthday;
}
public void setBirthday(java.util.Date birthday) {
this.birthday = birthday;
}
public String toString() {
return ReflectionToStringBuilder.toString(this);
}
}
2.建立Date格式化類
import java.text.SimpleDateFormat;
import java.util.Date;
import net.sf.json.JsonConfig;
import net.sf.json.processors.JsonValueProcessor;
public class JsonValueProcessorImplTest implements JsonValueProcessor {
private String format = "yyyy-MM-dd";
public JsonValueProcessorImplTest() {
super();
}
public JsonValueProcessorImplTest(String format) {
super();
this.format = format;
}
@Override
public Object processArrayValue(Object value, JsonConfig jsonConfig) {
String[] obj = {};
if (value instanceof Date[]) {
SimpleDateFormat sf = new SimpleDateFormat(format);
Date[] dates = (Date[]) value;
obj = new String[dates.length];
for (int i = 0; i < dates.length; i++) {
obj[i] = sf.format(dates[i]);
}
}
return obj;
}
@Override
public Object processObjectValue(String key, Object value, JsonConfig jsonConfig) {
if (value instanceof java.util.Date) {
String str = new SimpleDateFormat(format).format((Date) value);
return str;
}
return value.toString();
}
public String getFormat() {
return format;
}
public void setFormat(String format) {
this.format = format;
}
}
通過如上方式我們就可以把含date型別的javabean在javabean和json格式中相互轉化了,此java方法來自名為lyking2001
的ITeye上的網友。
其實我們也可以把這個作為一個字串分別拆分年、月、日來,然後簡單計算(如用當前日期測試拆開得到的對應各個日期段的差值,然後就可以與真實的引數拆開進行計算)後拼在一起也是可以的,js和java都可以這樣處理,只不過技術含量不高但簡單易理解。
相關推薦
json日期格式轉換為正常格式
ets 日期 gets urn second nbsp int pan bsp function jsonDateFormat(jsonDate) { try { var date = new Date(parseInt(jsonDate.repl
JS公用函式(1)——Json日期格式轉換
Json日期格式轉化為常用格式(YYYYMMDD): //將序列化成json格式後日期(毫秒數)轉成日期格式 function ChangeDateFormat(cellval) { if (cellval) {
json日期格式轉換
開發中,往往在後臺把帶有日期型別的一些資料直接轉成json然後繫結到前臺的樣式列表控制元件裡,在控制元件裡獲取或者繫結時,Date型別往往都變成了如 {"date":26,"day":1
JAVA物件轉換為JSON及日期格式轉換處理
預設JSON對DATE型別會轉換成一個多屬性物件, 而不是單獨的一個字串, 在某些應用處理上不是很方便, 可以利用JsonValueProcessor來實現日期的轉換. 方法: 1.增加一個DateJsonValueProcessor類,如下: import java.te
JAVA物件轉換為JSON時日期格式轉換處理
PS→無奈:受思深處宜先退,得意濃時便可休。 今天在返回json物件到前端時發現前端接收到的資料裡面的時間格式被拆開了,原因如下: 預設JSON對DATE型別會轉換成一個多屬性物件, 而不是單獨的一個字串, 在某些應用處理上不是很方便, 可以利用Js
JavaScript中JSON型別的日期格式轉換(Ajax)
在使用JSON傳遞日期格式後,有時候直接取得的日期會發現無法正常顯示。這個時候需要我們對取到的值進行進一步加工處理。 一、直接呼叫JSON方法,對資料進行封裝後傳遞的取值: 1、對日期進行JSON儲存 protected void doGet(Http
linq中日期格式轉換或者比較,程序報錯說不支持方法的解決辦法
格式 var lec fun edi nbsp diff sql 方法 public void TestMethod1(){using (var _context = new hotelEntities()){var rq = DateTime.Now.Date;var q
Java時間日期格式轉換
當前 所在 monday 獲取時間 第一周 獲取 字符串轉換 處理 last import java.text.*; import java.util.Calendar; public class VeDate { /** * 獲取現在時間 *
日期格式轉換
void imp mmd 相互 .text gettime mss main () package leixingzhuanhuan; import java.text.DateFormat;import java.text.ParseException;import ja
Java實現時間日期格式轉換示例
simple ati except else ktr new bsp 時間 .text package com.hanqi.util; import java.text.ParseException; import java.text.SimpleDateFormat;
Java日期格式轉換
set ram 長時間 .text sunday 自己 之間 exceptio mon Java時間格式轉換大全 import java.text.*;import java.util.Calendar;public class VeDate {/** * 獲取現在時間
Java時間日期格式轉換 轉自:http://www.cnblogs.com/edwardlauxh/archive/2010/03/21/1918615.html
throws 星期四 stat 格式轉換 see blog 一是 取得數據 www Java時間格式轉換大全 import java.text.*; import java.util.Calendar; public class VeDate { /** * 獲取
日期格式轉換(String->Date)
func -m [0 urn split arr 格式轉換 轉換 日期格 --網上的方法-- /** * 字符串轉Date(YYYY-MM-DD HH:MM:SS) * @param dateString * @returns {Date} */ function
SQL語句優化系列四(Oracle數據庫日期格式轉換)
fun ont 如果 etime 當前時間 字符轉換函數 dual minute nbsp Oracle數據庫日期格式轉換 select sysdate from dual select to_char(sysdate,‘yyyy/mm/dd hh24:mi:ss‘) as
Oracle數據庫日期格式轉換操作
時間 try oracle between rda RM 兩個 數據庫 操作 1. 日期轉化為字符串 (以2016年10月20日為例) select to_char(sysdate,‘yyyy-mm-dd hh24:mi:ss‘) strDateTime from dua
sql 導出數據到Excel 指定開始行 日期格式轉換JlntI
日歷 自己的 一點 國家 愛情 內心 可能 等待 爸爸 <p> 太白山依舊在晨霧中凸現。積雪的山峰,在一派透明純凈中蘇醒。溪水清麗,隱微的綠意在風中醞釀,閑雅與淡然,像一顆漫遊的心靈。風兒湧動的空隙,可以使,萬物姿態舒展而更加柔和,在天與山之間,在山與林之間,
java常見日期格式轉換以及日期的獲取
try get sdf for exc ins 第一天 trace util package com.test.TestBoot.SingleModel;import java.text.SimpleDateFormat;import java.util.Date;publ
使用newtonjson解決Json日期格式問題
encoding ignorecas ati align cti val tpm ride serial 使用Json.Net代替最簡單的方法就是使用下面的JsonNetResult 來作為 ActionResult返回。 但是比較麻煩,還有很多其他方法。下面使用我研究的最
spark日期格式轉換
object FilterUtilsV4{ //如果object使用了成員變數,那麼會出現執行緒安全問題,因為object是一個單例,多執行緒可以同時呼叫這個方法 //E代表星期幾 //val dateFormat = new SimpleDateFormat("yyyy年MM月dd日
C#實踐問題:日期格式轉換以及日期比較(日期函式使用大全)
轉自:https://www.cnblogs.com/zpq521/archive/2008/07/09/1238905.html C#日期函式使用大全 DateTime dt = DateTime.Now;dt.ToString();//20