日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

012_日期内建函数

發布時間:2025/5/22 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 012_日期内建函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. date, time, datetime(當用于日期/時間/日期-時間值時)

1.1. date:僅日期部分, 沒有一天當中的時間部分。

1.2. time:僅一天當中的時間部分, 沒有日期部分。

1.3. datetime:日期和時間都在。

1.4. 在最佳情況下, 你不需要使用這些內建函數。不幸的是, 由于Java平臺上的技術限制, FreeMarker有時不能發現日期中的哪一部分在使用; 詢問程序員哪些變量會有這個問題。如果FreeMarker 不得不執行需要這些信息的操作 --比如用文本顯示日期--但是它不知道哪一部分在使用, 它會以錯誤來中止運行。這就是你不得不使用這些內建函數的時候了。

1.5. 如果?左邊是字符串, 那么這些內建函數將字符串轉換成日期/時間/日期時間。

2. date_if_unknown, time_if_unknown, datetime_if_unknown

2.1. date_if_unknown, time_if_unknown, datetime_if_unknown內建函數使用一些子類型來標記日期類型的值。日期沒有時間, 時間, 或日期-時間類型。 如果變量值已經持有這些信息, 那么內建函數就不會起作用。也就是說, 它不會轉換變量值的子類型, 如果它是未知的, 則會添加子類型。

3. string(當用于日期/時間/日期-時間值時)

3.1. 這個內建函數以指定的格式轉換日期類型到字符串類型。

3.2. 期望的格式可以由?string.format或?string["format"](或歷史上等同的, ?string("format"))來指定, 這些都是等同的。除了使用引號格式的, 它可以在format中包含任意字符, ?比如空格。format的語法和配置設置項date_format, time_format和datetime_format是一樣的。

4. 例子

4.1. 新建一個名為FMBuiltInsForDateTime的動態Web工程, 同時添加相關jar包。

4.2. 編寫FMFactory.java

package com.fm.util;import java.util.Locale; import java.util.Map; import java.util.TimeZone; import java.util.concurrent.ConcurrentHashMap; import freemarker.template.Configuration; import freemarker.template.TemplateExceptionHandler;public class FMFactory {private final static FMFactory instance = new FMFactory();private FMFactory() {}public static FMFactory getInstance() {return instance;}private Map<String, Configuration> map = new ConcurrentHashMap<String, Configuration>();// 創建單個Configuration實例public synchronized Configuration getCfg(Object servletContext, String path) {if(null != map.get(path)) {return map.get(path);}Configuration cfg = new Configuration(Configuration.VERSION_2_3_22);cfg.setServletContextForTemplateLoading(servletContext, path);cfg.setDefaultEncoding("utf-8");// 本地化設置中文中國cfg.setLocale(Locale.CHINA);// 時區設置cfg.setTimeZone(TimeZone.getTimeZone("GMT+08"));// sql時區設置cfg.setSQLDateAndTimeTimeZone(TimeZone.getTimeZone("GMT+08"));// 日期格式化cfg.setDateFormat("yyyy-MM-dd");// 時間格式化cfg.setTimeFormat("HH:mm:ss.SSS");// 日期時間格式化cfg.setDateTimeFormat("yyyy-MM-dd HH:mm:ss.SSS");cfg.setTemplateExceptionHandler(TemplateExceptionHandler.RETHROW_HANDLER);map.put(path, cfg);return cfg;}}

4.3. 編寫BuiltInsForDateTime.java

package com.fm.action;import java.io.IOException; import java.io.OutputStreamWriter; import java.io.Writer; import java.sql.Time; import java.sql.Timestamp; import java.util.Date; import java.util.HashMap; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.fm.util.FMFactory; import freemarker.template.Configuration; import freemarker.template.Template; import freemarker.template.TemplateException;public class BuiltInsForDateTime extends HttpServlet {private static final long serialVersionUID = 1L;@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {Configuration cfg = FMFactory.getInstance().getCfg(req.getServletContext(), "/WEB-INF/templates");Template template = cfg.getTemplate("builtinsfordatetime.html");Map<String, Object> root = new HashMap<String, Object>();root.put("javaDate", new Date(System.currentTimeMillis()));root.put("sqlDate", new java.sql.Date(System.currentTimeMillis()));root.put("sqlTime", new Time(System.currentTimeMillis()));root.put("sqlTimestamp", new Timestamp(System.currentTimeMillis()));Writer out = new OutputStreamWriter(resp.getOutputStream());try {template.process(root, out);} catch (TemplateException e) {e.printStackTrace();}}@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doGet(req, resp);} }

4.4. 修改web.xml

4.5. 在/WEB-INF/templates下編寫builtinsfordatetime.html

<!DOCTYPE html> <html><head><meta charset="UTF-8" /><title>日期內建函數</title></head><body><h2>date, time, datetime</h2>${javaDate?date}<br />${javaDate?time}<br />${javaDate?datetime}<br />${sqlDate}<br />${sqlTime}<br />${sqlTimestamp}<br />${"2021-6-2"?date}<br />${"19:14:17.289"?time}<br />${"2021-6-2 19:14:17.289"?datetime}<h2>date_if_unknown, time_if_unknown, datetime_if_unknown</h2>${javaDate?date_if_unknown}<br />${javaDate?time_if_unknown}<br />${javaDate?datetime_if_unknown}<h2>string(當用于日期/時間/日期-時間值時)</h2>${javaDate?string("yyyy-MM-dd")}<br />${javaDate?string("HH:mm:ss.SSS")}<br />${javaDate?string("yyyy-MM-dd HH:mm:ss.SSS")}<br /></body> </html>

5.6. 運行項目

總結

以上是生活随笔為你收集整理的012_日期内建函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。