我正在使用joda-time-jsptags-1.1.1使用以下 taglib格式化和解析JSP 页面上基于Joda-Time的日期和时间对象。
<%@taglib prefix="joda" uri="http://www.joda.org/joda/time/tags" %>
Run Code Online (Sandbox Code Playgroud)
我在 Oracle 数据库中有使用标准 UTC 格式存储的日期。
使用以下 JSTL 标记,
<c:set var="startDate" value="${row.discountStartDate}"/>
<c:set var="endDate" value="${row.discountEndDate}"/>
Run Code Online (Sandbox Code Playgroud)
这两个日期分别以下列格式显示。
2013-02-16T22:31:59.000+05:30
2013-02-28T22:32:03.000+05:30
Run Code Online (Sandbox Code Playgroud)
我需要使用特定时区以特定格式显示这些日期。我正在尝试按如下方式解析这些日期。
<joda:parseDateTime var="startDate"
pattern="dd-MMM-yyyy HH:mm:ss"
value="${row.discountStartDate}"
dateTimeZone="Asia/Kolkata"/>
<joda:parseDateTime var="endDate"
pattern="dd-MMM-yyyy HH:mm:ss"
value="${row.discountStartDate}"
dateTimeZone="Asia/Kolkata"/>
Run Code Online (Sandbox Code Playgroud)
我希望以给定的格式和区域解析这些日期。但是,我收到以下异常。
java.lang.IllegalArgumentException:格式无效:“2013-02-16T22:31:59.000+05:30”在“13-02-16T22:31:59.000+05:30”处格式错误
如何解析这些日期
我在我的Web应用程序(使用Spring和Hibernate)中实现了分页,我需要的东西类似于以下内容.
public static int deleteSingle(long totalRows, long pageSize, int currentPage)
{
return totalRows==currentPage*pageSize-pageSize ? currentPage-- : currentPage;
}
Run Code Online (Sandbox Code Playgroud)
假设,我从以下某处调用此方法.
deleteSingle(24, 2, 13);
Run Code Online (Sandbox Code Playgroud)
使用这些参数,条件得到满足,并且currentPage应该返回变量(即13)减去1(即12)的值,但不会递减值currentPage.它返回此调用后的原始值13.
我必须像下面这样更改方法,以使其按预期工作.
public static int deleteSingle(long totalRows, long pageSize, int currentPage)
{
if(totalRows==currentPage*pageSize-pageSize)
{
currentPage=currentPage-1; //<-------
return currentPage; //<-------
}
else
{
return currentPage;
}
}
Run Code Online (Sandbox Code Playgroud)
那么为什么不用减量运算符将值减1 currentPage--呢?为什么需要 - currentPage=currentPage-1;在这种情况下?
BigDecimal当其比例值为零时,我需要删除值的小数部分.例如,
BigDecimal value = new BigDecimal("12.00").setScale(2, RoundingMode.HALF_UP);
Run Code Online (Sandbox Code Playgroud)
它将分配12.00.我希望它只能分配12给value在这种情况下.
BigDecimal value = new BigDecimal("12.000000").setScale(2, RoundingMode.HALF_UP);
Run Code Online (Sandbox Code Playgroud)
应该分配12,
BigDecimal value = new BigDecimal("12.0001").setScale(2, RoundingMode.HALF_UP);
Run Code Online (Sandbox Code Playgroud)
应该分配12.
BigDecimal value = new BigDecimal("12.0051").setScale(2, RoundingMode.HALF_UP);
Run Code Online (Sandbox Code Playgroud)
应该分配12.01
BigDecimal value = new BigDecimal("00.000").setScale(2, RoundingMode.HALF_UP);
Run Code Online (Sandbox Code Playgroud)
应该分配0.
BigDecimal value = new BigDecimal("12.3456").setScale(2, RoundingMode.HALF_UP);
Run Code Online (Sandbox Code Playgroud)
应该分配12.35和相似.这可能吗?什么是最好的方法?
我正在尝试转换JavaScript中以字节为单位表示的文件大小,如下所示(HTML 5).
function formatBytes(bytes)
{
var sizes = ['Bytes', 'kB', 'MB', 'GB', 'TB'];
if (bytes == 0)
{
return 'n/a';
}
var i = parseInt(Math.log(bytes) / Math.log(1024));
return Math.round(bytes / Math.pow(1024, i), 2) + sizes[i];
}
Run Code Online (Sandbox Code Playgroud)
但我需要以SI和二进制为单位表示文件大小,如果需要,
kB<--->KiB
MB<--->MiB
GB<--->GiB
TB<--->TiB
EB<--->EiB
Run Code Online (Sandbox Code Playgroud)
这可以在Java中完成,如下所示(对方法使用一个额外的布尔参数).
public static String formatBytes(long size, boolean si)
{
final int unitValue = si ? 1000 : 1024;
if (size < unitValue)
{
return size + " B";
}
int exp = (int) (Math.log(size) / Math.log(unitValue));
String initLetter …Run Code Online (Sandbox Code Playgroud) 以下代码用完全限定类名中的反斜杠替换所有点(它可以是任何字符串).
String str=Test.class.getName().replaceAll("\\.", "\\\\") + ".class";
System.out.println(str);
Run Code Online (Sandbox Code Playgroud)
替换字符串需要四个反斜杠.
假设替换字符串是文件路径中的分隔符,我想在不同的操作系统上使用它java.io.File.separator.
String separator=File.separator+File.separator
String str=Test.class.getName().replaceAll("\\.", separator) + ".class "
System.out.println(str);
Run Code Online (Sandbox Code Playgroud)
在这种情况下,它只使用两个反斜杠.为什么它不像前一种情况那样需要四个反斜杠?
我需要将Joda-Time日期/时间转换为java.util.Date.我做的如下.
DateTimeFormatter dateTimeFormatter=DateTimeFormat.forPattern("dd-MMM-yyyy hh:mm:ss aa");
DateTime dateTime = dateTimeFormatter.parseDateTime("2-Oct-2013 11:34:26 AM").withZone(DateTimeZone.UTC);
System.out.println(dateTime);
Run Code Online (Sandbox Code Playgroud)
这将按预期显示由UTC区域表示的日期/时间.在这种情况下,它是2013-10-02T06:04:26.000Z
当dateTime转换java.util.Date为如下时,
System.out.println(dateTime.toDate());
Run Code Online (Sandbox Code Playgroud)
它表明,Wed Oct 02 11:34:26 IST 2013.它应该是UTC格式.
从Joda-Time转换后有没有办法表示Datein UTC?
我希望将日期存储到由UTC区域表示的数据库中. org.joda.time.DateTime需要在将其插入数据库之前转换为java.util.Date(或java.sql.Timestamp).如何克服这种情况?
为什么主方法不调用第一种方法?
public class Test {
public static void printValue(byte...b) {
System.out.println("long");
}
public static void printValue(int i, int j, int k) {
System.out.println("int");
}
public static void main(String... args) {
byte b = 9;
printValue(b,b,b);
}
}
Run Code Online (Sandbox Code Playgroud)
为什么输出int?
给出以下XHTML代码(关于PrimeFaces 5.0 final).此处可以看到对数据表过滤器的新更改.
<p:dataTable id="dataTable" var="row" value="#{testManagedBean}"
lazy="true"
rowKey="#{row.transporterId}"
widgetVar="dataTableUIWidget">
<p:column id="id" headerText="Id" sortBy="#{row.transporterId}">
<h:outputText value="#{row.transporterId}"/>
</p:column>
<p:column id="transporter" headerText="Transporter" filterBy="#{row.transporterName}">
<f:facet name="filter">
<p:inputText onkeyup="PF('dataTableUIWidget').filter();"/>
</f:facet>
<h:outputText value="#{row.transporterName}"/>
</p:column>
</p:dataTable>
Run Code Online (Sandbox Code Playgroud)
以下是面向转换器以修剪字符串中的前导和尾随空格.
@FacesConverter(forClass=String.class)
public final class StringTrimmer implements Converter
{
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
return value != null ? value.trim() : null;
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
return (String) value;
}
}
Run Code Online (Sandbox Code Playgroud)
此转换器是否可以全局应用于数据表中指定的所有类型字符串过滤器(包括 …
假设我有一个这样的类:
class ASDF {
int a;
int b;
int c;
}
ASDF[] myArray;
Run Code Online (Sandbox Code Playgroud)
还有一些相当大的ASDF阵列.有没有办法编写一个接受ASDF成员名称和ASDF数组的函数,并对给定成员名称的所有成员求和?
即,我想要一个像这样工作的函数:
sumMember(myArray, a);
Run Code Online (Sandbox Code Playgroud)
将返回ASDF中所有'a'成员变量的总和.但是,有三个以上的成员变量,因此为每个变量设置一个函数是不现实的.
因此,在 eclipse 中的运行配置中,我选择了我的主类Main.java,在我放置的“程序参数”选项卡中testArg=Sample。
在我的应用程序的main方法中,我执行
System.out.println以下操作:
args[0]System.getProperty("testArg")我得到的结果args[0是 ] testArg=Sample,但我得到的结果System.getProperty("testArg")是null。
到底是怎么回事?我正在使用 Java 8 和 Eclipse Kepler。
笔记:
当我输入“VM Arguments”框时testArg=Sample,出现错误:
错误:无法找到或加载主类 testArg=Sample`
java ×7
jodatime ×2
bigdecimal ×1
date ×1
datetime ×1
eclipse ×1
hibernate ×1
java-8 ×1
javascript ×1
jsf ×1
jsf-2.2 ×1
jsp ×1
jstl ×1
overloading ×1
primefaces ×1
string ×1
utc ×1